我已经在这个问题上工作了几天,似乎无法找到解决方案:(
我有一个WCF服务的异步调用,它有时会工作,而在其他场合什么都不会做 - 没有呼叫,没有错误,什么都没有。它将在执行我的调用方法(主线程)后停止。 断点已添加到服务方法和自动生成的代理类中。如果我在失败的呼叫中进行调试,则永远不会遇到这些断点。其他时候(当它碰巧工作时)所有断点都将被击中。
我已完全删除该服务并再次添加,但仍然没有运气。 我甚至添加了一个新的服务方法和请求消息对象,希望它是原始的一个怪胎问题,但是我也遇到了与新插入的方法相同的问题。
请注意 - 当我将应用程序发布到虚拟机时,会更频繁地发生此问题。它在我的本地机器上并没有发生太多,但它仍然会发生。
以下是我的代码示例: -
这是对服务的异步调用;
ValidateUpdatesMessageRequest request = new ValidateUpdatesMessageRequest();
_serviceClient.ProcessUpdatesAsync(Request)
服务方法如下所示;
public ValidateUpdatesMessageResponse ProcessUpdates(ValidateUpdatesMessageRequest request){
//method body
}
我还有一个服务接口,看起来像这样;
[OperationContract]
ValidateUpdatesMessageResponse ProcessUpdates(ValidateUpdatesMessageRequest request);
我会提供任何可能有助于引导我走向解决方案的反馈意见。
如果您需要任何进一步的信息,请告诉我。
非常感谢提前!
答案 0 :(得分:1)
发生这种情况有三个基本原因:
希望这有帮助。
答案 1 :(得分:1)
我现在已经解决了我的问题。
我想我会为可能遇到同样问题的其他人发布我的解决方案。
在调用异步方法的方法结束时: -
_serviceClient.ProcessUpdatesAsync(request);
我有一个
CleanUp()
打电话给
_serviceClient.CloseAsync();
所以在服务方法运行之前就已经关闭了。
我只是拿了
CleanUp()
从orginial方法调用服务并将其置于事件完成方法中,这样异步线程在完成时关闭。 现在似乎很明显!
感谢您提出的所有建议和意见,非常感谢!
答案 2 :(得分:0)
有类似的问题。在我的情况下,原因是绑定的 readerQuotas 中的 maxArrayLength 值太低。