0

我有一个网站,我在 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 中签出,然后发布,然后发送,则根本不会发生此错误。

关于发生了什么的任何想法?

4

2 回答 2

2

据我所知,这是程序调试数据库(.PDB 文件)的一部分。好吧,您认为它引用您的机器的部分就是。

你真的应该使用构建服务器。;-) 但这是另一个话题。

发生错误的原因可能是因为其他用户没有设置正确的 ACL 来保存到 web 文件夹。

于 2009-11-18T19:16:17.267 回答
1

它只是编译应用程序时源文件的路径。我确定您的错误与此无关。我怀疑您的问题是,虽然您可能有权修改文件,但大多数用户没有。检查文件/目录的权限以查看是否需要打开它。也许它并不总是发生的原因是文件只需要更新一次,最终具有正确凭据的人可以访问它,然后为每个人修复它。

于 2009-11-18T19:19:06.943 回答