C# EasyNetQ/RabbitMQ客户端在IIS Web应用程序中未获得响应

C# EasyNetQ/RabbitMQ客户端在IIS Web应用程序中未获得响应,c#,asp.net,iis,rabbitmq,easynetq,C#,Asp.net,Iis,Rabbitmq,Easynetq,我正在使用EasyNetQ/RabbitMQ将在IIS中运行的web应用程序连接到Windows服务。然而,我似乎没有得到工作的请求/响应。我很确定这不是一个代码问题,但我不知道下一步该去哪里 这是一个工作非常完美的测试控制台应用程序: static void Main() { var stopHandle = new ManualResetEventSlim(); var producer = new Thread(() =>

我正在使用EasyNetQ/RabbitMQ将在IIS中运行的web应用程序连接到Windows服务。然而,我似乎没有得到工作的请求/响应。我很确定这不是一个代码问题,但我不知道下一步该去哪里

这是一个工作非常完美的测试控制台应用程序:

    static void Main()
    {
        var stopHandle = new ManualResetEventSlim();
        var producer = new Thread(() =>
        {
            string cs = "host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1";
            var bus = RabbitHutch.CreateBus(cs, x => x.Register<IEasyNetQLogger>(s => new EasyNetQ.Loggers.ConsoleLogger()));

            while (!stopHandle.IsSet)
            {
                try
                {
                    var result = bus.Request<AutomationRequest, AutomationResponse>(new AutomationRequest
                    {
                        taskId = "140061381555",
                        arguments = "type=pdf",
                        issueId = 97630548355,
                    });
                    Console.WriteLine("Result: " + result.status + ", " + result.status + ", " + result.downloadUrl);
                }
                catch (Exception)
                {
                    Console.WriteLine("Failed");
                }
                if (!stopHandle.IsSet) Thread.Sleep(1000);
            }

            bus.Dispose();
        });

        producer.Start();

        Console.ReadLine();

        stopHandle.Set();
        producer.Join();
    }
}
static void Main()
{
var stopHandle=新的ManualResetEventSlim();
var producer=新线程(()=>
{
string cs=“host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1”;
var bus=RabbitHutch.CreateBus(cs,x=>x.Register(s=>neweasynetq.Loggers.ConsoleLogger());
而(!stopHandle.IsSet)
{
尝试
{
var结果=总线请求(新自动请求
{
taskId=“140061381555”,
arguments=“type=pdf”,
issueId=97630548355,
});
控制台.WriteLine(“结果:+Result.status+”、“+Result.status+”、“+Result.downloadUrl”);
}
捕获(例外)
{
控制台写入线(“失败”);
}
如果(!stopHandle.IsSet)线程睡眠(1000);
}
bus.Dispose();
});
producer.Start();
Console.ReadLine();
stopHandle.Set();
producer.Join();
}
}
另一方面,这是相同的测试代码,但作为web应用程序:

namespace WebApplication2
{
    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string cs = "host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1";
            IBus bus = RabbitHutch.CreateBus(cs, x => x.Register<IEasyNetQLogger>(s => new EasyNetQ.Loggers.ConsoleLogger()));

            try
            {
                var result = bus.Request<AutomationRequest, AutomationResponse>(new AutomationRequest
                {
                    taskId = "140061381555",
                    arguments = "type=pdf",
                    issueId = 97630548355,
                });
                Console.WriteLine("Result: " + result.status + ", " + result.status + ", " + result.downloadUrl);
            }
            catch (Exception)
            {
                Console.WriteLine("Failed");
            }
            bus.Dispose();
        }
    }
}
命名空间WebApplication2
{
公共部分类\u默认值:第页
{
受保护的无效页面加载(对象发送方、事件参数e)
{
string cs=“host=localhost;virtualHost=/;username=demo;password=y4xHEyq3nQOd;timeout=120;persistentMessages=false;prefetchcount=1”;
IBus bus=RabbitHutch.CreateBus(cs,x=>x.Register(s=>neweasynetq.Loggers.ConsoleLogger());
尝试
{
var结果=总线请求(新自动请求
{
taskId=“140061381555”,
arguments=“type=pdf”,
issueId=97630548355,
});
控制台.WriteLine(“结果:+Result.status+”、“+Result.status+”、“+Result.downloadUrl”);
}
捕获(例外)
{
控制台写入线(“失败”);
}
bus.Dispose();
}
}
}
Web应用程序在队列中发送消息,消息在后端处理。后端为响应提供正确的correlationID并对其进行排队。然而,由于我不知道的原因,Web应用程序从未得到响应

Web应用程序最终会超时。但是,超时的长度并不是问题所在,因为将响应放入队列只需要大约两秒钟,而将两侧的超时更改为两分钟并没有任何区别

有人有现成的解决方案来解决什么问题吗?或者有什么想法去哪里找?我在谷歌上搜索了所有我能找到的关于EasyNetQ或RabbitMQ的信息,但我甚至没有发现任何人报告过类似的问题


--karri

我也有类似的问题。你找到解决办法了吗?我也有类似的问题。你找到解决办法了吗?