2

WCFサービスを呼び出しているASPXページから次のエラーが発生します。

HTTP要求は、クライアント認証スキーム「Ntlm」では許可されていません。サーバーから受信した認証ヘッダーは「NTLM」でした。

負荷分散されたWebサーバー環境にいて、クライアントASPXページが同じサーバー上のWCFサービス(負荷分散されたWebサーバー上でも)にアクセスしている場合にのみエラーが発生します。

例:
サーバーAのASPXページ->サーバーBのWCFサービス=問題なし。
サーバーBのASPXページ->サーバーCのWCFサービス=問題なし。
サーバーBのASPXページ->サーバーBのWCFサービス=上からのエラー。

サーバーはIIS7.5であり、WCFサービスは現在、ネットワークサービスアカウントとして実行されている匿名認証とWindows認証で構成されています。

これはループバック保護と関係がありますか?現在、アプリケーションとサービスが同じマシンでホストされている単一のサーバー環境でこれらの結果を複製することはできません。

ASPXページとサービスのバインディングは次のとおりです。

クライアント:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_Imyservice">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://loadbalancedserver/myservice/myservice.svc"
        binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Imyservice"
        contract="myservice.Imyservice" name="BasicHttpBinding_Imyservice" />
    </client>
  </system.serviceModel>

WCFサービス:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpEndpointBinding">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="myservice.Service.myservice">
        <endpoint address="" bindingNamespace="http://services.company.net/myservice"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpEndpointBinding"
          contract="myservice.Imyservice" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>  
4

1 に答える 1

2

誰かがこれに遭遇した場合、それはIIS ループバックの問題が原因でした。http://support.microsoft.com/kb/896861からのレジストリ修正でうまくいきました。

于 2012-10-05T20:05:22.483 に答える