我最近在我们的开发Web服务器上安装了4.5框架,该服务器在Windows Server 2008上运行IIS 7.5。安装后,两个Web服务开始出现相同的错误。这些Web服务是使用MS REST Starter Kit构建的。这是我得到的错误。
绑定实例已与侦听URI相关联。如果两个端点想要共享相同的ListenUri,则它们还必须共享相同的绑定对象实例。两个冲突的端点在AddServiceEndpoint()调用,配置文件或AddServiceEndpoint()和config的组合中指定。
以下是配置文件的system.service模型部分的副本。
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<webHttpBinding>
<binding>
<security mode="Transport" />
</binding>
</webHttpBinding>
<wsHttpBinding>
<binding name="EnterpriseIdentityBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="https://betaapps/EnterpriseIdentity/V1/UserService.svc"
binding="wsHttpBinding" bindingConfiguration="EnterpriseIdentityBinding"
contract="UserServiceWCF.IUserService" name="wsSecureUsers" />
<endpoint address="https://betaapps/EnterpriseIdentity/V1/RoleService.svc"
binding="wsHttpBinding" bindingConfiguration="EnterpriseIdentityBinding"
contract="RoleServiceWCF.IRoleService" name="wsSecureRoles" />
</client>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"/>
</webHttpEndpoint>
</standardEndpoints>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="Hsmv.Web.Security.IdentityModel.HttpContextWithRolesPolicy, Hsmv.Web.Security" />
</authorizationPolicies>
</serviceAuthorization>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
知道安装.Net 4.5后会出现此错误的原因吗?
我想补充一点,我尝试删除此部分,但没有它就可以正常工作。
<webHttpBinding>
<binding>
<security mode="Transport" />
</binding>
</webHttpBinding>
我使用它是因为此服务在ssl上运行。我听说WCF 4.5尝试为您创建绑定和端点,因此它们不需要在web.config中。所以我想知道这部分是否由WCF自动构建而且不需要。或者我的想法不正确? 谢谢!
答案 0 :(得分:1)
我来自WCF团队。感谢您报告此问题。 WCF团队将继续调查此问题以进行修复。在我们调查时,您可以通过在配置文件中显式配置webHttp端点来解决此问题。服务将像以前一样行为。尝试遵循这些简单的步骤。
(我将您在本文中发布的配置文件作为起点)
注释掉&lt; standardEndpoints&gt;配置文件中的标记:
&LT;! - &LT; standardEndpoints&GT;
&LT; webHttpEndpoint&GT;
&lt; standardEndpoint name =“”helpEnabled =“true”automaticFormatSelectionEnabled =“true”/&gt;
&LT; / webHttpEndpoint&GT;
&LT; / standardEndpoints&GT; - &GT;
将此终点行为添加到您的列表中,如下所示:
&LT;行为&GT;
&LT; endpointBehaviors&GT;
&lt; behavior name =“REST”&gt;
&lt; webHttp helpEnabled =“true”automaticFormatSelectionEnabled =“true”/&gt;
&LT; /行为&GT;
&LT; / endpointBehaviors&GT;
&LT; /行为&GT;
在配置文件中明确配置服务端点,如下所示。对于突出显示的属性值,分别替换服务类型名称和合同名称(注意:如果没有为服务定义合同,则在合同中插入服务类型名称=“”)
&LT;服务&GT;
&lt; service name =“WcfRestService1.Service1”&gt;
&lt; endpoint address =“”binding =“webHttpBinding”contract =“WcfRestService1.Service1”behaviorConfiguration =“REST”/&gt;
&LT; /服务&GT;
&LT; /服务&GT;
答案 1 :(得分:0)
就我而言,一旦我从web.config中删除<security/>
标记,问题就解决了。我把它设置为&#34; none&#34;,所以这可能不适用于你的特定情况。