我有一个网站,我在 Visual Studio 2008 中发布,然后发送给其他人。其中一个页面需要更改一些配置文件,因此使用网站引用的类库中的 WindowsImpersonationContext 执行操作。
protected void WithImpersonation(ExecuteUnderImpersonation action)
{
using(WindowsImpersonationContext context = Request.LogonUserIdentity.Impersonate())
{
action();
}
}
但是,当其他人尝试提交此页面时,它会引发错误
无法将配置保存到文件“C:\Inetpub\wwwroot\SomeWebsite\web.config”。
查看 StackTrace 我看到了这个条目:
在我机器的 FILEPATH中的 SomeClassLibrary.SomeClass.WithImpersonation(ExecuteUnderImpersonation 操作) :第 23 行
这似乎只发生在一个特定页面上,即使多个页面调用相同的方法。
如果我已将网站(以可更新模式)发布到 PrecompiledWeb 文件夹,并在 bin 目录中使用适当的引用发布它,为什么它会在我的机器上查找该类?这个错误甚至没有意义,如果它正在寻找一个在他们的服务器上不存在的文件,他们不应该得到一个完全不同的错误吗?
我把同一个网站放在我的一台连接到域的服务器上。如果我尝试从以我自己身份登录的服务器或在我的机器上运行相同的页面,我不会收到此错误。
一位同事之前说过,他们有时也会收到此错误,但最终会消失。我们无法确定问题的原因,但如果同一网站要在其他人的计算机上从 SVN 中签出,然后发布,然后发送,则根本不会发生此错误。
关于发生了什么的任何想法?