web-dev-qa-db-ja.com

サーバーアプリケーションが利用できません-ファイルまたはAssemblySystem.Webを読み込めませんでした。アクセスが拒否されました

私は、Windows Server 2003(32ビット)マシンでWCF Webサービスの仮想ディレクトリを設定しようとしている開発者であり、イベントログに次のログが記録された状態で「サーバーアプリケーションを使用できません」というメッセージが表示され続けます。

メッセージ:ファイルまたはアセンブリ 'System.Web、Version = 2.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つを読み込めませんでした。アクセスが拒否されました。

これまで私が試した:

  • 匿名アクセス制御に使用されるアカウントを再確認します(これはローカル管理者です)
  • C:\Windows\Microsoft.Net\Frameworkディレクトリのアクセス許可を確認します(ASPNETには読み取り/書き込みアクセス権があり、Everyoneアクセス権も付与しています)
  • ASP.Netv2.0拡張機能の無効化と有効化
  • アプリケーション拡張子のリストで.svc拡張子を削除して再作成する
  • System.WebがGACに存在することを確認するためのチェック
  • .Net Framework3.5の再インストールSP 1
  • 仮想ディレクトリに独自のアプリケーションプールを与える
  • フュージョンロギングは私に何の興味も教えてくれません

私はそれを理解できません-同じ設定で同じWebサーバー上で完全に機能しているように見える別の.asmxWebサービスがあります。私は何を逃しましたか?

この種のアクセス許可の問題を理解するために使用できる手法はありますか?アクセスしようとしているユーザーアカウントとパスを知っておくと便利ですが、マシンの監査ポリシーで失敗イベントを有効にしても何も起こらないようです。

1
Justin

Ugg my bad-これは重複しているようです https://serverfault.com/questions/63675/server-unavailable-and-removed-permissions-on-net-sites-after-windows-update =。サービス自体が含まれているディレクトリのアクセス許可を確認しましたが、すべて問題ありませんでした。

また、他の質問では、FileMonを使用して、何/誰が何にアクセスできなかったかに関する詳細情報を確認していることにも気づきました。

2
Justin

あなたの最新のコメントが鍵を持っている可能性があります。 Filemon(またはprocessmon)は、このような状況の友達です。使用したことがない場合は、本番サーバーで実行しても安全で、無料で、簡単に理解できます。 (データのキャプチャを長くしすぎないでください)

System.WebはGACから呼び出す必要があるため、アクセス許可エラーはおそらくGAC内の何かによるものです。唯一の例外は、開発者がSystem.Web.dllを/ binフォルダーに配置した場合です。誰かが本当にサーバーを強化していない限り、アクセス許可はそれほどロックダウンされるべきではありません。プロセスモニターはすぐに答えを教えてくれるはずです。

それをキャプチャするには、Process Monitorをキューに入れ、キャプチャを開始し、失敗したページを更新し、キャプチャを停止してから、「拒否された」という単語を検索します。

1

同じ設定の同じWebサーバーで完全に機能しているように見える別の.asmxWebサービスがあります。私が逃したもの

同じポートとIPで異なるWebサイトに実行しようとしている可能性がありますか?そのうちの1つのポートを変更するか、他のサイトをシャットダウンしてみてください。

ただのロングショット。

0
Trondh