IIS 表达不尊重 serviceCredentials

IIS express dont respect serviceCredentials

我正在测试 WCF 服务,我想将其部署到 IIS Express(非经典 IIS)以用于开发目的

我的一部分Web.config

</serviceHostingEnvironment>

<services>

  <service name="WcfService1.Service1" behaviorConfiguration="test">
    <endpoint binding="basicHttpsBinding" contract="WcfService1.IService1" />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>

</services>


<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>


    <behavior name="test">

      <serviceMetadata httpGetEnabled="False" httpsGetEnabled="True" />
      <serviceDebug includeExceptionDetailInFaults="True" />
      <serviceCredentials>
        <serviceCertificate findValue="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                            storeLocation="LocalMachine"
                            storeName="My"
                            x509FindType="FindByThumbprint" />
      </serviceCredentials>
    </behavior>

  </serviceBehaviors>
</behaviors>
<protocolMapping>
  <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

当我在 IIS Express 上部署它时,一切正常...除了它在端口 44300 上(没问题),但它使用 IIS Express 自己的证书,该证书是在 iis Express 安装上生成的。

我明确指定,所以他应该使用我的按指纹和价值定位的证书 "XXXXXXX...."

如何强制 IIS 表达尊重该服务行为部分?

#SCOTT HANSELMAN 有一篇不错的博客 post:

 http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

好的,我有一个解决方案。 我写的是不同类型的证书 - 它用于客户端的服务认证。

用于建立 SSL 连接的证书实际上是用这个命令设置的:

netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE

Azure 项目 - Web 角色会在项目启动时自动执行此操作。