WCF服务应用程序不允许基本身份验证配置

时间:2017-04-06 09:05:03

标签: c# asp.net wcf iis basic-authentication

我有一个使用.NET Fraweork 4.5.2的WCF服务应用程序和一个Managed pipeline mode设置为Integrated的应用程序池。我使用基本身份验证来使用此WCF服务。我已将应用程序部署到两个环境(devqa),在dev中它完美无缺,但在qa中我收到以下错误:

enter image description here

以下是应用程序的IIS身份验证配置:

enter image description here

这是我的web.config

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding>
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Basic" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <services>
        <service name="MyProject.IS01" 
                 behaviorConfiguration="ServiceWithMetaData">
            <endpoint name="Default" 
                address="" 
                binding="basicHttpBinding" 
                contract="MyProject.IIS01" />
        </service>
    </services>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceWithMetaData">
                <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment 
            aspNetCompatibilityEnabled="true" 
            multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
        <add name="ErrorLog" type="Elmah.ErrorLogModule, Elmah" preCondition="managedHandler" />
        <add name="ErrorMail" type="Elmah.ErrorMailModule, Elmah" preCondition="managedHandler" />
        <add name="ErrorFilter" type="Elmah.ErrorFilterModule, Elmah" preCondition="managedHandler" />
    </modules>
    <directoryBrowse enabled="true" />
    <validation validateIntegratedModeConfiguration="false" />
</system.webServer>

消息错误的第一个短语对我来说非常困难。它表示身份验证设置为Windows,但正如您在第二个屏幕截图中看到的那样,Windows身份验证已被禁用。

是否缺少配置中的内容?我应该在托管IIS的服务器上激活某些功能吗?

我提到我在谷歌上发现的所有问题都与匿名身份验证有关(而不是基本身份验证)。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这是因为您错过了服务端点中的BindingConfiguration设置,因此根本不应用配置。改变如下

<bindings>
  <basicHttpBinding>
    <binding name="testbinding">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Basic" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>


<services>
  <service name="MyProject.IS01" behaviorConfiguration="ServiceWithMetaData">
    <endpoint name="Default" address="" binding="basicHttpBinding" 
 contract="MyProject.IIS01" bindingConfiguration="testbinding" />
  </service>
</services>