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

本文关键字:WebConfigs 服务 节点 项目 新创建 创建 VS2012 WCF | 更新日期: 2023-09-27 18:20:40

我使用Visual Studio 2012创建了一个新的WCF项目,我注意到web.config中没有服务节点来定义服务和合同,但是我将服务部署到azure并成功了,但是我得到了这个错误:

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

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

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

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

详细信息可以在以下链接中找到:开发者介绍Window的Communication Foundation 4

在您的情况下,您需要在配置文件中创建一个大小较大的绑定,并将其设置为默认绑定,或者将该绑定分配给显式定义的端点。

默认情况下,WCF(在.NET4+中)将通过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="" />

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

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