0

Windows 認証を有効にして、イントラネット アプリケーションの匿名認証を無効にしようとしています。IIS7 で既に Windows 認証を有効にし、匿名を無効にしており、Windows 認証を使用するように Web.Config を設定しています。

<system.web>
    <authentication mode="Windows" />
    <compilation debug="true" targetFramework="4.0" />
</system.web>

アプリケーションをデプロイして実行すると、ページ ヘッダーだけが読み込まれます。Chrome または IE で Service.svc ファイルに移動すると、次のエラーが表示されます。

このサービスのセキュリティ設定には「匿名」認証が必要ですが、このサービスをホストする IIS アプリケーションでは有効になっていません。

System.NotSupportedException: このサービスのセキュリティ設定には「匿名」認証が必要ですが、このサービスをホストする IIS アプリケーションでは有効になっていません。

これは Web.Config または Service.svc.cs の問題だと思いますが、特定できません。これは、1 つのサービスに対してのみ発生します。IIS7 で匿名認証を有効にすると問題は解決しますが、無効にする必要があります。

私の ServiceRefernces.ClientConfig には、次のものがあります。

<configuration>
  <system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
  <endpoint address="http://OHARA-WIN7/nightlyweb/Service.svc"       
      binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_IService"    
      contract="ServiceReference2.IService"
      name="BasicHttpBinding_IService" />
    </client>
  </system.serviceModel>
</configuration>

TransportClientCredentialType を Ntlm に設定するように言われている投稿をたくさん見てきましたが、VisualStudio はこの要素を認識しません。

4

1 に答える 1

3

私はついにそれを理解しました。マネージャーのプロジェクトの 1 つとさらに比較したところ、必要だと思っていた ServiceReferences.ClientConfig ではなく、このコードを Web.COnfig に追加する必要があることに気付きました。

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding>
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
</system.serviceModel>
于 2012-06-04T18:29:52.233 に答える