我运行的WCF服务应用程序需要将字节数组发送到服务并从服务返回。我得到了413"请求太大"错误。我已经研究过这个错误,并且有许多响应,比如更改绑定元素以包含maxReceivedMessageSize,将readerQuotes元素添加到绑定元素中,并设置设置和其他更改。但是,我的web.config没有绑定元素。我在客户端改变了它,但这没有任何区别。这将使服务器端(服务运行)成为需要完成这些设置的地方。我无法在服务器端进行更改。我缺少哪些设置来处理发送和接收更大的字节数组?这是服务器正在使用的web.config:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:1)
默认情况下,从WCF 4.0开始(没有明确定义端点或绑定)WCF将使用basicHttpBinding
创建默认端点。这使得配置不那么混乱,但也意味着您获得绑定的默认值。当您需要绑定的非默认设置(在服务端)时,有两种方法可以解决此问题:
首先,您可以通过省略name
属性来添加默认绑定配置,如下所示:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding closeTimeout="........... />
</basicHttpBinding>
</bindings>
或者,您可以命名绑定配置,然后创建使用该配置的显式端点:
<system.serviceModel>
<services>
<service name=".....>
<endpoint address="" bindingConfiguration="MyBasicHttpBinding"..... />
第二个例子假设你有一个名为&#34; MyBasicHttpBinding&#34;的绑定配置。在你的绑定部分。
为了简单起见,我省略了大量的配置。如果您需要更多详细信息,请与我们联系。
答案 1 :(得分:0)
https://stackoverflow.com/a/884248/78551是此问题的可接受答案。服务器端将设置类似的配置。
由于试图从实体框架中撤回大量数据集,我曾遇到过这个问题。有一个限制,这些事情会严重影响您可以推动的数据量。
我打破了我的要求。 GetProducts,GetOrders,GetContracts等。然后在客户端我将它们拼接在一起。我不宽恕这样做但我被建筑师强迫处理这些巨大的数据集。
有时你无法绕过框架/平台的限制。
另外,您是否看过其他使用的协议,如net.tcp(如果我没记错的话)会打开套接字并传输数据?