0

问题:我有一个函数会返回大量的列表记录,因此在获取此记录时,会引发以下异常。异常和堆栈跟踪的详细信息如下所述:

异常:接收 HTTP 响应时发生错误这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。

堆栈跟踪: 服务器堆栈跟踪:在 System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException,HttpWebRequest 请求,HttpAbortReason abortReason)

在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(时间跨度超时)

在 System.ServiceModel.Channels.RequestChannel.Request(消息消息,TimeSpan 超时)

在 System.ServiceModel.Dispatcher.RequestChannelBinder.Request(消息消息,TimeSpan 超时)

在 System.ServiceModel.Channels.ServiceChannel.Call(字符串操作,布尔单向,ProxyOperationRuntime 操作,Object[] 输入,Object[] 输出,TimeSpan 超时)

在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime 操作)

在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage 消息)

在 [0] 处重新抛出异常:在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)

在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 类型)

据我了解,这是一种请求超时问题。我试图在 web.config 中设置以下内容,但没有帮助。

    <system.web>
    <httpRuntime maxRequestLength="102400" />
    </system.web>

如何解决这个问题,任何解决方法?或任何替代解决方案?可以避免任何可以处理大量数据或此异常的方法/技术。

提前致谢!

4

2 回答 2

0

您需要将大型数据绑定值放入配置中。在您的服务配置中添加以下服务行为。

 <behaviors>
      <serviceBehaviors>
        <behavior name="SilverlightWCFLargeDataApplication">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>

      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="SilverlightWCFLargeDataApplication">
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
于 2013-02-20T13:01:01.920 回答
0

您可以在 web.config 中设置此值。例如,要更改一个特定页面的超时时间:

<location path="somefile.aspx">
    <system.web>
            <httpRuntime executionTimeout="180"/>
    </system.web>
</location>

有关详细信息,请参阅http://msdn2.microsoft.com/en-us/library/e1f13641.aspx 。

希望有帮助。

于 2013-02-20T11:34:15.493 回答