我需要能够为在 MSMQ 上运行的 WCF 服务动态设置事务超时。我正在关注 MSDN 上的示例:http: //msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.channeldispatcher.transactiontimeout.aspx。但是,我设置的超时似乎不起作用。
我用来设置TransactionTimeout属性的代码如下:
ServiceProperties properties = ...; // has a TransactionTimeout value for the service
var serviceHost = new ServiceHost(...);
serviceHost.Open();
var channelDispatchers =
serviceHost.ChannelDispatchers.Select(
cd => new ChannelDispatcher(cd.Listener)).ToArray();
foreach (var channelDispatcher in channelDispatchers)
{
channelDispatcher.TransactionTimeout = properties.TransactionTimeout;
}
当我运行我的服务并在我的服务实现中延迟 2 分钟时,当我尝试写入另一个 MSMQ 队列时收到一个事务登记错误:
异常:发送到队列时发生错误:指定的事务不能被登记。(-1072824232, 0xc00e0058)。确保 MSMQ 已安装并正在运行。如果要发送到本地队列,请确保队列存在并具有所需的访问模式和授权。
过去有没有人能让这个工作?任何想法将不胜感激。
先感谢您。