VS2012中新创建的WCF项目在Web Config中没有服务节点

时间:2013-06-30 15:45:32

标签: c# wcf

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

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

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

1 个答案:

答案 0 :(得分: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" />

如果您需要除basicHttpBinding以外的其他内容来处理http请求,可以在协议部分执行此操作:

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

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

正如我所说,这些只是简单的例子,可以给你一个想法,而且在我链接的文章中有更多细节。