Silverlight异步超时错误

时间:2008-12-01 16:15:35

标签: silverlight asynchronous wcf

在我的silverlight应用程序中调用启用Silverlight的WCF服务,偶尔会有用户超时。什么是最简单的方法来增加服务客户端允许响应的时间?

抛出的确切异常是:System.TimeoutException:[HttpRequestTimedOutWithoutDetail]

由于

5 个答案:

答案 0 :(得分:12)

这可以在silverlight应用程序中的ServiceReference.ClientConfig文件的节点中设置。

答案 1 :(得分:4)

这里接受的答案对我不起作用。相反,我必须将基本通道转换为IContextChannel,并在其上设置OperationTimeout。

为此,我不得不创建一个带有部分类的新文件,该文件与ServiceReference的名称相匹配。在我的情况下,我有一个PrintReportsService。代码如下。

using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace RecipeManager.PrintReportsService 
{
    public partial class PrintReportsClient : System.ServiceModel.ClientBase<RecipeManager.PrintReportsService.PrintReports>, RecipeManager.PrintReportsService.PrintReports 
    {
        public void SetOperationTimeout(TimeSpan timeout)
        {
            ((System.ServiceModel.IContextChannel)base.Channel).OperationTimeout = timeout;
        }


    }
}

然后当我创建客户端时,我会执行以下操作:

        PrintReportsService.PrintReportsClient client = new RecipeManager.PrintReportsService.PrintReportsClient();
        client.SetOperationTimeout(new TimeSpan(0, 4, 0));

这样做对我来说!有更多信息可供here,但此帖子中的代码段无法编译。

答案 2 :(得分:1)

这可以设置,但是有一个上限由底层HTTP库定义(我认为它是五分钟)。请注意,使用较高的值将回退到上限。另外,请注意您可能还需要在服务器上配置超时。

答案 3 :(得分:1)

我通过在IE中启用兼容模式来修复此问题

答案 4 :(得分:0)

我认为您应该从Silverlight应用程序实现对服务器的基于计时器的回调,而不是更改超时,以便会话不会过期。这将消除所有应用程序更长时间超时的开销。