所有
我有一个WCF服务(在asp.net 4.0网络应用程序中),在asp.net兼容模式下运行。 当我的silverlight客户端将大量数据发布到服务Save(SomeLargeObject)时,我从服务器收到此消息(400-Bad Request)。我在服务器上跟踪了错误并从服务中得到了这个:
已超出传入邮件的最大邮件大小限额(65536)。要增加配额, 在适当的绑定元素上使用MaxReceivedMessageSize属性。
要解决此错误,我已更新了我的服务器服务配置文件(web.config):
<bindings>
<basicHttpBinding>
<binding name="WebStoreServices_BasicHttpBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
<wsHttpBinding>
<binding name="MyBinding" maxReceivedMessageSize="2147483647" />
</wsHttpBinding>
<webHttpBinding>
<binding name="NewBinding0" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
</webHttpBinding>
</bindings>
和我的Silverlight客户端服务配置文件:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IWebStoreServices" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:1271/Services/WebStoreServices.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWebStoreServices"
contract="WebStore.IWebStoreServices" name="BasicHttpBinding_IWebStoreServices" />
</client>
</system.serviceModel>
我仍然在服务器上收到上述错误,“传入邮件的最大邮件大小配额(65536)”,就像我在服务器上的绑定被忽略一样。为什么忽略我的设置!我确实使用WCF工具来创建绑定以避免错误。
答案 0 :(得分:2)
设置看起来很好 - 但使用basicHttpBinding
的服务器端端点是否实际引用了那个绑定配置与增加的MaxReceivedMessageSize
设置?
您应该在服务器端web.config
中设置类似的设置:
<services>
<service name="WebStore.WebStoreServices">
<!-- this endpoint uses basicHttpBinding and uses the binding configuration -->
<endpoint name="basicHttp"
address="......"
binding="basicHttpBinding"
bindingConfiguration="WebStoreServices_BasicHttpBinding"
contract="WebStore.IWebStoreServices" />
</service>
</services>
如果您的basicHttpBinding
端点缺少 bindingConfiguration="..."
设置 - 那么,您已经定义了绑定配置,但实际上您并未使用它!