2

我尝试使用WSHttpBindingWindows 身份验证和 HTTP 协议设置 WCF 服务,而不是 HTTPS。是否可以?我正在使用 IIS 7。当前我的配置文件如下。

使用此配置应用程序会引发异常:

找不到与绑定 WSHttpBinding 的端点的方案 http 匹配的基地址。注册的基地址方案是 []。

我的代码是:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WsBehavior">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <services>
      <service behaviorConfiguration="WsBehavior" name="LoginService">
        <endpoint address="" binding="wsHttpBinding" bindingConfiguration="WsBinding" contract="ILoginService">
          <identity>
            <dns value="http://localhost:50001/Ws/" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" minFreeMemoryPercentageToActivateService="1">
      <baseAddressPrefixFilters>
        <add prefix="http://localhost:50001/Ws/" />
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

    <bindings>
      <wsHttpBinding>
        <binding name="WsBinding" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="64" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
  </system.serviceModel>
4

2 回答 2

1

我得到了下一个错误

主机上配置的身份验证方案(“IntegratedWindowsAuthentication”)不允许在绑定“WSHttpBinding”(“匿名”)上配置的身份验证方案。请确保将 SecurityMode 设置为 Transport 或 TransportCredentialOnly。此外,可以通过 IIS 管理工具、通过 ServiceHost.Authentication.AuthenticationSchemes 属性、在元素的应用程序配置文件中更改此应用程序的身份验证方案、通过更新绑定上的 ClientCredentialType 属性或通过调整来解决此问题HttpTransportBindingElement 上的 AuthenticationScheme 属性。

所以回答我的问题。不可能。

于 2012-10-01T11:35:10.683 回答
0

您需要在 host/baseAddresses 配置节点中注册一个基地址。此外,您的 DNS 身份应该是主机名而不是端点地址:

<services> 
  <service behaviorConfiguration="WsBehavior" name="LoginService">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:50001/Ws"/>
      </baseAddresses>
    </host> 
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="WsBinding" contract="ILoginService"> 
      <identity> 
        <dns value="localhost" /> 
      </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
  </service> 
</services> 
于 2012-09-26T14:55:19.490 回答