即使未在服务app.config中指定,客户端app.config也会创建传输安全性

问题描述

|| 我将wsHttpBinding的绑定配置定义为:
 <wsHttpBinding>
    <binding name=\"CustomAuthentication\">
      <security mode=\"Message\">
        <!-- Change to Message-->
        <message clientCredentialType=\"UserName\"/>
        <!-- Change to UserName -->
      </security>
    </binding>
  </wsHttpBinding>
当我使用svcutil生成代理代码并查看它为客户端生成的app.config时,我会在安全性部分看到以下内容
<security mode=\"Message\">
    <transport clientCredentialType=\"Windows\" proxyCredentialType=\"None\" realm=\"\" />
                    <message clientCredentialType=\"UserName\"
                             negotiateServiceCredential=\"true\"
                             algorithmSuite=\"Default\" />
</security>
我没有在服务配置中指定传输安全性,因此为什么要使用clientCredentialType = \“ Windows \”创建传输节点。这是设计使然吗?我看了我的Michele Leroux Bustamante的视频,她说您不能使用“传输和消息”,它将忽略其中一个,因此,如果您同时指定两者,则没有关系。我只想知道为什么它在客户端app.config中创建了它     

解决方法

原因可能与svcutil和VS为大多数服务创建巨大的配置文件的原因相同:它们会使用默认设置生成绑定/配置,对其进行调整,然后将其序列化为配置文件,这意味着您可以获得相当广泛的详细配置文件因为它们包括那些配置对象中所有属性的值(默认值或其他值)。