クラスタ化された環境でホストされているWebサービスがあります。このサービスを呼び出すWebアプリケーションも、クラスター化された環境でホストされますが、IIS6サーバーの別のセットにホストされます。したがって、アプリケーションサーバーはappserv1とappserv2で、サービスサーバーはsvcserv1とsvcserv2です。私たちは通常、アクセスするサーバをappservまたはsvcservのいずれかとみなすため、アクセスするサーバを制御しません。
サービスはWCFサービスですが、.Net 2.0 Webサービスフレームワークと互換性があるように作成されています。アプリケーションは正常に動作しますが、おそらくサービスが応答する時間の35%以上がで例外的に実行されます。例外:要求がHTTPステータス401:Unauthorizedで失敗しました。エラー。サーバからの断続的な「401:Unauthorized」例外
資格情報を直接設定することをお勧めしている人もいますが、私のアプリケーションではこれを次のようにしています。
Dim cc As New CredentialCache()
Dim service As WCFServiceRef.Reports
service = New WCFServiceRef.Reports
service.Url = serviceURL
cc.Add(New Uri(service.Url), "Negotiate", New NetworkCredential("username", "password"))
service.Credentials = cc
reportData = service.GenerateReport(reportid, True, parameters, "PDF", Environment)
私はまた、直接ロードマネージャをバイパスし、サーバのドメイン名に直接移動するための基準URLを変更することで、個々のサーバーにアクセスしようとしたが、これは何の違いも行っていません。
私も見たことがありますthis MSDN KBの記事ですが、私は直接サーバー構成にアクセスできないため(何か変更するのは難しいです)、アプリケーションから何かできないことを確認したかったのです側。サーバーはWindows認証用に構成されており、匿名アクセスは許可されません。
ありがとうございます!
ありがとうございました。あなたは私に多くの調査をしました。研究に時間を費やし、調査結果をフォローアップします。 .configファイルでこれらの値を設定していないので、私は現在SPN登録を検討中です。 – McArthey
偽装を使用してサービスを実行している場合、上記の#2に関連してサービスが実行されているアカウントに影響しますか(SPN/UPNの設定用)? – McArthey
あなたの質問の一部をもう一度読んだところ、サービスサーバーがクラスタ内で実行されている、つまり負荷分散されていると言われたことに気付きました。その場合、SPNをサービスアカウントに登録し、IIS6アプリケーションプールをサービスアカウント。私は偽装がこれにどのように影響するかは100%確信していませんが、他の方法は見られません(負荷分散/クラスタ環境の場合、SPNをマシンアカウントに登録すると、IISは、要求が実際にどのマシンに送られているのかを知ることができないため、Kerberosチケットが必要です)。 –