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 からチェックアウトされ、公開され、送信された場合、このエラーはまったく発生しません。
何が起こっているかについてのアイデアはありますか?