有没有办法告诉WCF服务在一定时间后响应请求(有或没有中止它的处理),即使它还没有完成,比如服务器端超时策略?
解决方法
我想你可以通过在WCF操作开始后立即启动一个新线程来做到这一点.然后真正的工作发生在新线程上,原始WCF请求线程使用具有特定超时的Thread.Join()等待.如果发生超时,则可以使用Thread.Abort()取消工作线程.
像这样的东西:
- public string GetData(int value)
- {
- string result = "";
- var worker = new Thread((state) =>
- {
- // Simulate l0ng running
- Thread.Sleep(TimeSpan.FromSeconds(value));
- result = string.Format("You entered: {0}",value);
- });
- worker.Start();
- if (!worker.Join(TimeSpan.FromSeconds(5)))
- {
- worker.Abort();
- throw new FaultException("Work took to long.");
- }
- return result;
- }