2

我在 Visual Studio 中创建了一个新的 WCF 安全令牌服务,它在 http 上运行良好。我现在正在尝试将其配置为通过 https 运行。我已将 IIS 中的目录安全性更改为需要 SSL。

正如预期的那样,当我通过 http 浏览服务时,我现在收到消息“必须通过安全通道查看该页面”。但是,当我通过 https 浏览服务时,我收到一条错误消息,提示“找不到与绑定 WS2007HttpBinding 的端点的方案 http 匹配的基地址。注册的基地址方案是 [https]。”

我假设 web.config 文件中必须有一个我忽略的配置,但我不太确定它是什么。在这件事上的任何帮助都会很棒。

我的 web.config 文件如下所示。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appSettings>
    <add key="IssuerName" value="ActiveSTS"/>
    <add key="SigningCertificateName" value="CN=STSTestCert"/>
    <add key="EncryptingCertificateName" value="CN=DefaultApplicationCertificate"/>
  </appSettings>

  <connectionStrings />

  <location path="FederationMetadata">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>
    <authentication mode="None"/>
    <pages>
      <controls>
        <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </controls>
    </pages>
  </system.web>

  <system.web.extensions>
    <scripting>
      <webServices>
          <authenticationService enabled="true" requireSSL = "true"/>
      </webServices>
    </scripting>
  </system.web.extensions>

  <system.serviceModel>
    <services>
      <service name="Microsoft.IdentityModel.Protocols.WSTrust.WSTrustServiceContract" behaviorConfiguration="ServiceBehavior">
        <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
        <endpoint address="IWSTrust13" binding="ws2007HttpBinding" contract="Microsoft.IdentityModel.Protocols.WSTrust.IWSTrust13SyncContract"  bindingConfiguration="ws2007HttpBindingConfiguration"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/DemoSTS/Service.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <bindings>
      <ws2007HttpBinding>
        <binding name="ws2007HttpBindingConfiguration">
          <security mode="Message">
            <message establishSecurityContext="false" />
          </security>
        </binding>
      </ws2007HttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>
4

1 回答 1

0

添加额外的 https 基地址。

如果您是 IIS 上的主机,则必须配置 SSL 并为 https 通道分配适当的证书。

于 2012-12-28T09:56:28.450 回答