13

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

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

谢谢

4

5 回答 5

12

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

于 2008-12-01T16:23:50.100 回答
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));

那是为我做的!更多信息可在此处获得,但本文中的代码片段无法编译。

于 2010-03-20T04:05:47.127 回答
1

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

于 2008-12-01T21:16:30.710 回答
1

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

于 2010-04-06T12:39:24.433 回答
0

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

于 2009-05-15T10:45:39.120 回答