增加silverlight应用程序的超时

时间:2012-02-19 08:46:22

标签: wcf silverlight timeout

我有一个启用了RIA服务的silverlight 4应用程序,还有silverlight使用WCF服务,整个东西都托管在IIS上。 我需要为WCF服务和ria服务以及IIS 7.5增加silverlight的超时。 如何设置相关的超时设置(ria服务,WCF,IIS)? P.S

配置中的对应字段在哪里?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我在这里发布了这个问题的答案:Silverlight 4 WCF RIA Service Timeout Problem

以下是答案:

我在这里回答了同样的问题:WCF ria service SP1 timeout expired

答案:

我将解释我的背景,并希望它对我的工作有用。我很确定。

首先在我的例子中调用RIA服务,并使用一些域上下文:

EmployeeDomainContext context = new EmployeeDomainContext();
InvokeOperation<bool> invokeOperation = context.GenerateTMEAccessByEmployee(1, 'Bob');
invokeOperation.Completed += (s, x) =>
    {....};

直到这里才有新的东西。有了这个,我每次都面临1分钟后的同一超时异常。我花了很多时间试图面对如何更改超时定义,我在Web.config中尝试了所有可能的更改而没有。解决方案是:

创建一个CustomEmployeeDomainContext,它是在生成的代码的相同路径中本地化的部分类 ,并且此类使用钩子方法OnCreate来更改创建的域上下文的行为。在这堂课中你应该写:

public partial class EmployeeDomainContext : DomainContext
{
    partial void OnCreated()
    {
        PropertyInfo channelFactoryProperty = this.DomainClient.GetType().GetProperty("ChannelFactory");
        if (channelFactoryProperty == null)
        {
            throw new InvalidOperationException(
              "There is no 'ChannelFactory' property on the DomainClient.");
        }

        ChannelFactory factory = (ChannelFactory)channelFactoryProperty.GetValue(this.DomainClient, null);

        factory.Endpoint.Binding.SendTimeout = new TimeSpan(0, 10, 0); 

    }
}

我期待着您的反馈。