WCF IIS HTTPS基本身份验证.奇怪的问题

问题描述:

嗨!

我有一个非常奇怪的问题,如果我不能尽快解决它,我会秃顶:(

它非常简单,我要做的就是设置IIS以承载需要通过SSL进行基本身份验证的WCF服务

我有一个受信任的证书.
该网站在默认端口443上运行.
IIS网站也设置为仅允许基本身份验证.
如果我尝试访问应用程序中的任何.txt文件都可以正常工作.

Bur 当我尝试访问.svc文件时,我的登录无效.它不断提示我输入用户名和密码.

在网站日志文件中,我收到401.5 http错误?!?

有人知道如何解决这个问题吗?

致谢
Per Bornsjo

Regards
Per Bornsjo

下面的Web.config部分

Web.config sections below 

< system.serviceModel >
< 绑定 >
  <
basicHttpBinding >
    <
绑定 名称 = " SecurityByTransport " 字体> >
     <
安全性 模式 = " 仅传输凭据 " >
       <
运输 clientCredentialType = " 基本 " proxyCredentialType = " " />
&nbsp ;    </
安全性 >
    </
绑定 >
  </
basicHttpBinding >
</
绑定 >
<
行为 >
  <
serviceBehaviors >
    <
行为 名称 = " DefaultBehavior " 字体> >
    <
serviceMetadata httpGetEnabled = " " httpsGetEnabled = " true " />
&nbsp ;     <
serviceDebug includeExceptionDetailInFaults = " true " 字体> />
    < serviceThrottling maxConcurrentCalls = " 50 " FONT> maxConcurrentSessions = " 50 " />
&nbsp ;     <
dataContractSerializer maxItemsInObjectGraph = " 655360 " 字体> />
</
行为 >
  </
服务行为 >
</
行为 >
<
服务 >
  <
服务 behaviorConfiguration = " DefaultBehavior " 名称 = " MASServices.MASActivities " >
    <
端点 地址 = " 绑定 = " basicHttpBinding " bindingConfiguration = " SecurityByTransport " 名称 = " BasicEndpoint " 合约 = " MASServices.IMASActivities " />
  </
服务 >
</服务 >

<system.serviceModel>
<bindings>
  <
basicHttpBinding>
    <
binding name="SecurityByTransport">
      <
security mode="TransportCredentialOnly">
        <
transport clientCredentialType="Basic" proxyCredentialType="None" />
      </
security>
    </
binding>
  </
basicHttpBinding>
</
bindings>
<
behaviors>
  <
serviceBehaviors>
    <
behavior name="DefaultBehavior">
      <
serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
      <
serviceDebug includeExceptionDetailInFaults="true" />
      <
serviceThrottling maxConcurrentCalls="50" maxConcurrentSessions="50" />
      <
dataContractSerializer maxItemsInObjectGraph="655360" />
    </
behavior>
  </
serviceBehaviors>
</
behaviors>
<
services>
  <
service behaviorConfiguration="DefaultBehavior" name="MASServices.MASActivities">
    <
endpoint address="" binding="basicHttpBinding" bindingConfiguration="SecurityByTransport" name="BasicEndpoint" contract="MASServices.IMASActivities" />
  </
service>
</services>

 

如果要通过HTTPS进行基本身份验证,则需要进行以下配置

If you want basic auth over HTTPS, you need to have the following configuration

<绑定 名称 = " SecurityByTransport " >
<
= " 传输"
>
运输 clientCredentialType 基本" proxyCredentialType = " 没有"
/>
</
安全性
>
</
绑定 >

    <binding name="SecurityByTransport">
      <
security mode="Transport"
>
        <
transport clientCredentialType="Basic" proxyCredentialType="None"
/>
      </
security
>
    </
binding
>

帖子中的配置(TransportCredentialOnly)表示没有SSL要求.

谢谢

Vish

Vish