Silverlight 4 WCF Ria服务超时

时间:2011-02-04 20:25:01

标签: silverlight wcf timeout ria

我之前没有得到解决方案就问过这个问题,但是由于我已经做了很多测试和调试,并且有了新的信息,我想我会再次提出要求,希望能够深入了解这个问题,为了所有人。

我的域名服务在1分钟后超时。我已经阅读了所有的帖子,并看到了如何创建一个局部类并明确设置超时值,我已经完成了这一点,但我仍然在一分钟后超时。 需要注意的是,在我的部分类/方法中明确设置超时后,我不再收到标准超时错误。相反,我得到了这个:

  

{System.Net.WebException:远程   服务器返回错误:NotFound。   ---> System.Net.WebException:远程服务器返回错误:   未找到。在   System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult的   asyncResult)at   System.Net.Browser.BrowserHttpWebRequest<> c_DisplayClass5.b_4(对象   sendState)at   System.Net.Browser.AsyncHelper<> c_DisplayClass2.b_0(对象   sendState)---内部异常结束   堆栈跟踪--- at   System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback   beginMethod,Object state)at   System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult的   asyncResult)at   System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult的   结果)}

这是我设置超时值的部分类。我已经调试了这一点,并确保在调用服务之前设置了这些值。我正在使用的服务方法是TestTimeout()。它只会坐下来等到抛出上述异常 - 在通话后一分钟。

  public partial class MyDomainContext
  {
    partial void OnCreated()
    {
      var proxy = (WebDomainClient<MyDomainContext.IMyDomainServiceContract>)this.DomainClient;
      proxy.ChannelFactory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0);
      proxy.ChannelFactory.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 5, 0);
      proxy.ChannelFactory.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 5, 0);
      proxy.ChannelFactory.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 5, 0);

    }
  }

我在服务器上的测试功能:

[Invoke]
public void TestTimeout()
{
  while (true)
  {
    Thread.Sleep(100); // after one full minute, I get the above exception
  }
}

其他什么东西可以超时吗?我在本地开发机器以及运行IIS7的生产服务器上看到了同样的问题。我很困惑这可能是什么。我不认为超时值被忽略,因为我不再获得标准超时异常。我只是觉得还有另一个地方发生超时。

有什么想法吗?

-Scott

2 个答案:

答案 0 :(得分:0)

这只是一个想法,你试过让你的asp.net会话超时显式,可能是一分钟......

答案 1 :(得分:0)

尝试将其放在代理的构造函数中:

InnerChannel.OperationTimeout = new TimeSpan(24, 0, 0);