Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 为什么我们使用NetMessagingBinding侦听Azure服务总线队列的服务会停止接收消息?_Wcf_Azure_Wcf Binding_Azureservicebus - Fatal编程技术网

Wcf 为什么我们使用NetMessagingBinding侦听Azure服务总线队列的服务会停止接收消息?

Wcf 为什么我们使用NetMessagingBinding侦听Azure服务总线队列的服务会停止接收消息?,wcf,azure,wcf-binding,azureservicebus,Wcf,Azure,Wcf Binding,Azureservicebus,我们有一个WCF服务,它使用NetMessagingBinding侦听Azure servicebus队列。然而,我们发现,有时当消息到达时,服务似乎停止收到通知,即我们看到队列在增加,但没有一个实例处理消息 如果我们随后重新启动实例,它们将立即再次开始接收来自队列的消息 以工作人员角色打开WCF服务的代码: var endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(ICacheKeyExchangeWit

我们有一个WCF服务,它使用NetMessagingBinding侦听Azure servicebus队列。然而,我们发现,有时当消息到达时,服务似乎停止收到通知,即我们看到队列在增加,但没有一个实例处理消息

如果我们随后重新启动实例,它们将立即再次开始接收来自队列的消息

以工作人员角色打开WCF服务的代码:

var endpoint = new ServiceEndpoint(ContractDescription.GetContract(typeof(ICacheKeyExchangeWithSession)))
{
    Address = new EndpointAddress(new Uri(baseAddress + QueueNames.Cache)), 
    Binding = new NetMessagingBinding(), 
};

var endpointBehavior = new TransportClientEndpointBehavior
{
    TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(id, secret), 
};

endpoint.EndpointBehaviors.Add(endpointBehavior);
host = new ServiceHost(typeof(DataService), new Uri[] { });
host.AddServiceEndpoint(endpoint);
host.Open();
我们在app.config中没有NetMessagingBinding的特定配置:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<extensions>
  <behaviorExtensions>
    <add name="transportClientEndpointBehavior" type="Microsoft.ServiceBus.Configuration.TransportClientEndpointBehaviorElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </behaviorExtensions>
  <bindingElementExtensions>
    <add name="netMessagingTransport" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingTransportExtensionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </bindingElementExtensions>
  <bindingExtensions>
    <add name="netMessagingBinding" type="Microsoft.ServiceBus.Messaging.Configuration.NetMessagingBindingCollectionElement, Microsoft.ServiceBus, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </bindingExtensions>
</extensions>
</system.serviceModel>


有什么想法吗?

根据您的描述,听起来您可能是IIS配置的受害者:您需要确保IIS没有配置为自动回收运行应用程序的应用程序池。如果您没有在iis中配置应用程序初始化,您的服务将不会自动重新启动并恢复处理消息

服务停止接收消息需要多长时间?这取决于它似乎有时会持续一天,有时几小时后,有时候根本不会发生。我也有同样的问题——你最终找到解决办法了吗?@andymoose不,对不起。该项目在我们解决之前就被搁置了,我们刚刚从wcf改为使用azure消息传递库——我记得是在微软的建议下进行的