我们在 Web 应用程序的请求/响应模型中使用 MassTransit。我们能够发送请求并接收响应。出于测试/调试目的,我们将响应处理程序上的 HandleTimeOut 设置为 1 小时。问题是当服务器无法发送响应时,我无法在客户端做任何事情(我无法访问任何其他页面)。在重置 IIS 之前,应用程序服务器不会响应来自浏览器的任何其他请求。这是预期的行为。如果可以的话,有人可以解释一下为什么 IIS 没有响应任何其他页面请求,以及是否有办法改变这种行为。
我在 autofac 模块中注册总线
builder.Register(c => ServiceBusFactory.New(sbc =>
{
sbc.UseMsmq();
sbc.VerifyMsDtcConfiguration();
sbc.VerifyMsmqConfiguration();
sbc.ReceiveFrom("msmq://localhost/MassTransit_ClientQueue");
sbc.UseBinarySerializer();
sbc.SetCreateTransactionalQueues(false);
})).As<IServiceBus>().SingletonScoped();
我的客户端代码如下所示
var bus = IoC.Resolve<IServiceBus>();
bus.GetEndpoint(new Uri("msmq://localhost/MassTransit_ServerQueue"))
.SendRequest(new Message(), bus, rc =>
{
rc.HandleTimeout(new TimeSpan(1, 0, 0),
() => { });
rc.Handle<MessageResponse>(resmess =>
{
});
rc.Handle<MassTransit.Fault<Message>>
(resmess =>
{
});
});