1

我知道这已经被问过很多次了,但是我在没有帮助的情况下浏览了数十个类似的问题。

当我的 asp.net 4.0 应用程序尝试访问本地驱动器上的文件夹时,会显示此错误,执行以下操作:

XmlTextReader confReader = new XmlTextReader (filename);           
while (confReader.Read())  // <- error line
{
  // do something
}

在我的 web.config 中,我有 <Identity Impersonate="true">。对于我已分配完全访问权限的文件夹:

everyone 
IIS APPPOOL\<custom apppoolname> 
NETWORK SERVICE

调试应用程序时,我可以放置一个手表,在被指控的行之前评估这个调用:

System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();

调用显示当前用户是 IIS APPPOOL\<custom apppoolname>。

我在带有 Sp1 的 Windows 7 64 位上。我知道这可能很愚蠢,但我已经花了很多时间在这上面。

编辑
问题出在变量“filename”中,它指向正确的文件夹,但对于配置问题,文件名丢失(即内容是“c:\data\”而不是“c:\data\file. xml”)。Asp.net 错误实际上令人困惑,因为我拥有访问该文件夹的所有正确权限。DJKRAZE 为我指明了正确的方向。

4

2 回答 2

1

这是我建议检查的内容

where are you declaring filename..? Does the file even exist..?

你有那个文件夹的权利..?您是否尝试过以管理员身份运行 VS ..?您是否为 Web 应用程序设置了虚拟目录..听起来您也有一些配置不正确,但根据初学者的代码无法真正判断这一行System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString(); 应该产生您的domain\\username or compuername\\username

很高兴这FileName就是一切

于 2013-03-22T19:28:18.920 回答
0

IIS 要求服务器计算机中文件夹的路径具有Anonymous用户登录访问权限。

确保用户Anonymous有权访问该文件夹。

于 2013-03-22T18:31:27.013 回答