1

我已经使用 Visual Studio 2012 创建了一个新的 WCF 项目,我注意到 g 中没有服务节点web.confi来定义服务和合同,但是我将服务部署到 azure 并且它可以工作,但是我收到了这个错误:

The remote server returned an unexpected response: (413) Request Entity Too Large. In Silverlight

所以我想我需要增加允许的最大请求,但是在没有服务节点的情况下如何做到这一点?

4

1 回答 1

1

从 VS 2010 WCF 开始,添加了默认端点(以及默认绑定和行为)的概念,以简化配置。

详细信息可以在这个链接中找到:A Developer's Introduction to Window's Communication Foundation 4

在您的情况下,您需要在配置文件中创建一个更大尺寸的绑定,并将其设置为默认绑定或将该绑定分配给明确定义的端点。

默认情况下,WCF(在 .NET 4+ 中)会将通过 http 传入的请求分配给basicHttpBinding. 这些协议映射也可以在配置文件中更改。

几个简单的例子可以帮助你(我链接的文章更详细):

要创建默认绑定,只需定义绑定并省略name属性:

<bindings>
    <basicHttpBinding>
        <binding maxReceivedMessageSize="10000000" ....>
    </basicHttpBinding>
</bindings>

这将使您提供的配置成为basicHttpBinding使用该配置的服务的默认配置。

或者,您可以name在绑定配置上使用该属性,然后将其分配给定义的输入。假设您有一个绑定名称“MyBinding”:

<endpoint address="" binding="basicHttpBinding" 
                     bindingConfiguration="MyBinding" 
                     contract="MyService.IMyContract" />

如果您想要的不是basicHttpBindinghttp 请求,您可以在协议部分执行此操作:

<system.serviceModel>
  <protocolMapping>
    <add scheme="http" binding="wsHttpBinding" bindingConfiguration="" />

您的情况的关键是您需要创建具有更大值的绑定,然后将其设置为默认值或将其分配给端点(您还需要定义)。

正如我所说,这些只是为您提供一个想法的简单示例,我链接的文章中有更多细节。

于 2013-06-30T18:03:19.877 回答