我正在尝试从WPF客户端测试我构建的一个小型WCF服务,当我在服务代理上调用异步方法时,我得到TimeoutException
:
async void ExecuteProcessNowCommand()
{
try
{
await _proxy.ProcessAsync(true);
}
catch (FaultException<FaultExceptionData> fix)
{
MessageBoxFacility.ProcessingError(fix.Detail.ExceptionType + ": " + fix.Detail.Message, fix.Detail.StackTrace);
}
}
此代码来自我的viewmodel,以响应按钮的命令。
未处理的异常,而不是来自FaultException
。这里的实际时机是什么时候?我假设await不会阻塞并超时,所以我怀疑它在其他地方,但await
可能导致超时?异常消息是:
类型&#39; System.TimeoutException&#39;的例外情况发生在 mscorlib.dll但未在用户代码中处理
其他信息:HTTP请求 &#39; http://localhost:8089/TestService/SchedulerService/&#39;已经超过了 分配超时00:01:00。分配给此操作的时间可能 是超时的一部分。
WCF托管在Windows服务中,该服务在调用方法时运行。我应该从哪里开始寻找诊断?
答案 0 :(得分:2)
WCF has a timeout on many operations。操作是否为async
并不重要。默认情况下,大多数WCF超时都是一分钟,这符合您的例外情况。
可用的超时时间为:
在您的情况下,相关超时可能是SendTimeout,因为操作可能超过一分钟。
此异常System.TimeoutException
不会在FaultException
下,因为它是客户端异常,它不是来自服务器。
如果要处理此异常,则需要添加适当的catch子句。要消除此异常,您需要确保操作不超过分配的时间或将超时配置增加到更合理的值。