2009-05-11 9 views
2

WCFサービスで異なるエラーが発生しています。このサービスはこれまでのところ、すべてのテスト環境で正常に機能しています。私たちは通常、Windows Server 2003上のIIS 6上で動作させています。私は、会社のドメインに接続されたWindows XP Pro VMのもとで実行していました。私たちのIT担当者は、ちょうど最近、会社のドメインからVMを削除しました。WCF 403エラー

は今、私はこれらのようなエラーを取得しています:

An existing connection was forcibly closed by the remote host.

The remote server returned an error: (403) Forbidden.

The HTTP request was forbidden with client authentication scheme 'Anonymous'.

は、IISは、匿名アクセスを許可するように設定されています。 IISユーザーには、サービスフォルダの表示/実行権限もあります。

一部のコールではサービスは正常に動作しますが、他のコールでは正常に動作しません。アプリケーションはロード時にサービスを呼び出しますが、後で別の呼び出しでサービスを呼び出します。

サービス

はwsHttpBindingを使用している:

<wsHttpBinding> 
    <binding name="wsHttpBindingSettings" maxReceivedMessageSize="2147483647"> 
     <security mode="None"> 
     <transport clientCredentialType="None" /> 
     <message establishSecurityContext="false" /> 
     </security> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    </binding> 
    </wsHttpBinding> 
+0

サービス内の何かにアクセスするためにスレッディングを行っていた場所を1つ取り出しました。それでも質問には答えませんが、少なくとも私のコードは今働いています。私は、コードがローカルで実行されているサービスとWindows Server 2003のボックスで正常に動作する理由を理解していませんが、XP Pro VMではそうではありません。 –

答えて

1

この問題の鍵は、Windows XP上のIIS 5で実行されていたということでした。 XPのIIS 5の最大接続数は10です。この制限を超えると、私たちは403エラーを受け取ったと思います。ラップトップでデモを行うために、XPではなくServer 2008 VMを使用してこの問題を解決しました。

0

サービスは、いくつかの呼び出しのためではなく、他人のために正常に動作します。アプリケーションはロード時にサービスを呼び出しますが、後で別の呼び出しでサービスを呼び出します。

DBのファイルやファイルへのアクセスなど、機密性の高い操作が実行されなかった可能性があります。 IISアプリケーションプールはどのアクセス許可で実行されますが、クライアント偽装を使用していますか?それは

また、この設定をしようとする場合があります。..問題を説明するだろう:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="xyz"> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="True"/> 
+0

ほとんどすべての呼び出しが機密処理を行います。私はそれらのどれもが問題を引き起こしているとは思わない。私はすでにincludingExceptionDetailsInFaultsを有効にしており、もう詳細は得られません。 私はIISのアプリケーションプールについてはよく分かりません。 –

0

同じ問題をここで、私は、エンドポイントへの結合デフォルトを追加し、明示的にセキュリティを設定することによって、問題を軽減しました可能であれば "None"に設定してください。しかし、これはうまくいきますが、サーバーにコールが頻繁に送られて失敗すると、VS2008の開発Webサーバーが非常に高い頻度の呼び出しでも失敗することに気付きました。 これは何らかの方法でIISに関連するはずですが、セキュリティコンテキストの期間に関連するものだと思われますが、これまでのところ私の推測にすぎません。実際の解決策は見つかりませんでした。

+0

問題はXP上のIISバージョンでのみ表示され、次のIISバージョン(Windows Server 2003上など)はどんな状態でも大きく機能します –

0

IISとweb.configのセキュリティ設定の組み合わせ

IISの設定が匿名で統合され、web.configの設定がimpersonate = falseのWindowsに設定されている場合。

次に、マシンがドメイン内にあるとき、統合認証が使用され、すべて正常に動作します。

ドメインからマシンを削除すると、匿名認証が使用され、リソースにアクセスするために使用されるIIS匿名ユーザーになります。このユーザーには権利が限られているため、一部の呼び出しが失敗する可能性があります。

web.configの設定をimpersonate = falseに変更できます。これは、アプリケーションプールのIDを使用してリソースにアクセスすることを意味します。