我正在调用WCF服务,我正在尝试上传图片。但是,当它到达WCF服务时,它会出现此错误:
远程服务器返回错误:(413)请求实体太大。
对WCF服务的跟踪说:
System.ServiceModel.ProtocolException:已超出传入邮件的最大邮件大小限额(65536)。要增加配额,请在相应的绑定元素上使用MaxReceivedMessageSize属性。
所以,读起来,我觉得很容易。只需更改设置即可离开。但事实并非如此。我已通过"编辑WCF设置"编辑了绑定。 Visual Studio中的GUI。它修改了web.confg,如下所示:
<system.serviceModel>
<services>
<service behaviorConfiguration="debugMode" name="Portal.Service" />
</services>
<behaviors>
<serviceBehaviors>
<behavior name="debugMode">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Portal" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" closeTimeout="01:50:00" openTimeout="01:50:00" sendTimeout="01:50:00" receiveTimeout="01:50:00" >
<readerQuotas maxDepth="128" maxStringContentLength="8388608" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</basicHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
然而错误仍然存在?问题肯定是WCF服务,因为我在服务跟踪日志中看到了异常。调用客户端(ASP.Net)将其称为&#34;远程服务器&#34;。
我在客户端web.config上也有这些设置:
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_Portal" maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" />
</basicHttpBinding>
</bindings>
在IIS中,我也设置了 uploadReadAhead 大小。我现在该做什么都不知所措。绑定匹配,通过GUI更改设置。它还想要什么?
答案 0 :(得分:2)
您更改了绑定的配置,但我在服务的配置文件中找不到您实际使用绑定的任何位置(&#34; BasicHttpBinding_Portal&#34 ;)
你可以做两件事之一。通过bindingConfiguration
标记的<service>
属性将该绑定分配给显式端点,或者通过省略basicHttpBinding
属性将您设置的配置设置为name
的默认值在<binding>
标记上。由于您没有定义明确的端点,我建议采用第二种方法:
<bindings>
<basicHttpBinding>
<binding maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" />
</basicHttpBinding>
</bindings>
这里的关键点是您必须告诉服务使用您指定的绑定。如果您不这样做,将使用绑定的默认值。通过省略绑定配置的name
属性,您可以告诉框架将该配置用于任何basicHttpBinding
个请求。