有没有办法告诉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; }