0

Visual Studio 2008 で発行した Web サイトを他の人に送信しています。ページの 1 つでいくつかの構成ファイルを変更する必要があるため、Web サイトによって参照されるクラス ライブラリ内で WindowsImpersonationContext を使用してアクションが実行されます。

protected void WithImpersonation(ExecuteUnderImpersonation action)
{
    using(WindowsImpersonationContext context = Request.LogonUserIdentity.Impersonate())
    {
        action();
    }
}

ただし、他の誰かがこのページを送信しようとすると、送信されたというエラーがスローされます。

ファイル 'C:\Inetpub\wwwroot\SomeWebsite\web.config' に構成を保存できません。

StackTrace を見ると、次のエントリが表示されます。

SomeClassLibrary.SomeClass.WithImpersonation (ExecuteUnderImpersonation アクション) でFILEPATH FROM MY MACHINE : 23 行目

複数のページがこの同じメソッドを呼び出しているにもかかわらず、これは 1 つの特定のページでのみ発生しているようです。

Web サイトを (更新可能モードで) PrecompiledWeb フォルダーに公開し、bin ディレクトリで適切な参照を使用してリリースした場合、マシンでクラスを検索するのはなぜですか? サーバーに存在しないファイルを探している場合、エラーは意味がありません。かなり異なるエラーが発生するのではないでしょうか?

同じ Web サイトを取得し、ドメインに接続されたサーバーの 1 つに配置しました。自分自身としてログインしたサーバーから、または自分のマシンで同じページを実行しようとした場合、このエラーは発生しません。

同僚は以前、このエラーが発生することもあるが、最終的にはなくなると言っていました。問題の原因を特定することはできませんが、同じ Web サイトが別のコンピューターで SVN からチェックアウトされ、公開され、送信された場合、このエラーはまったく発生しません。

何が起こっているかについてのアイデアはありますか?

4

2 に答える 2

2

私の知る限り、これは Program Debug Database (.PDB ファイル) の一部です。まあ、それがあなたのマシンを参照していると思う部分です。

ビルドサーバーを使用する必要があります。;-) しかし、それは別のトピックです。

エラーが発生する理由は、おそらく他のユーザーが Web フォルダーに保存するための正しい ACL を設定していないためです。

于 2009-11-18T19:16:17.267 に答える
1

アプリケーションがコンパイルされたときのソース ファイルへのパスです。あなたのエラーはそれに関連していないと確信しています。あなたの問題は、ファイルを変更する権限を持っているかもしれませんが、ほとんどのユーザーは持っていないことだと思います。ファイル/ディレクトリのアクセス許可を確認して、開く必要があるかどうかを確認してください。おそらく、常に発生するとは限らない理由は、ファイルを一度だけ更新する必要があり、最終的には適切な資格情報を持つ誰かがアクセスして、全員に対して修正されるためです.

于 2009-11-18T19:19:06.943 に答える