当我在Visual Studio中将服务引用添加到服务时,它会不断将此extendedProtectionPolicy
添加到我的安全绑定中,在我的Win7机器上它可以正常工作。但是,当我部署到Server 2003时,它错误地说出配置文件中无法识别的元素。
删除行<extendedProtectionPolicy policyEnforcement="Never" />
可修复错误。
这是在添加服务引用(客户端)
之后生成的不需要的web.config的整个部分<security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
以下是我的服务正在使用的行为(iis7-host side)
<behavior name="GetHttpsIncludeFaults">
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="MyCustomValidator, MyOtherAssembly"/>
</serviceCredentials>
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
我想指出一些事情。这种情况发生在VS2010和VS2008中。这种情况发生在ASP.NET-MVC风格的消费者项目中,以及Windows服务/ WPF应用程序。
答案 0 :(得分:3)
据我所知,从互联网和Microsoft Connect上发现的信息更具体,这是一个尚未修复的已知问题。
您可以使用Visual Studio 2010的“配置转换”功能解决此问题。配置转换是一项非常有用的功能,允许您在部署应用程序时自动更改配置文件的内容(如连接字符串)。 / p>
不幸的是,目前只有web.config文件支持Config Transforms。 This blogpost解释了如何使用Config Transforms for app.config文件。
以下转换可以解决您的问题:
<?xml version="1.0"?>
<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding>
<security>
<transport>
<extendedProtectionPolicy xdt:Transform="Remove" />
</transport>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
如您所见,它在部署您的应用程序时会删除<extendedProtectionPolicy/>
节点。