Visual Studio“添加服务引用”不断将“extendedProtectionPolicy”添加到我的配置文件中

时间:2010-07-14 16:23:18

标签: c# .net wcf security iis

当我在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应用程序。

1 个答案:

答案 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/>节点。