我知道很多次都曾问过这个问题,但是我在没有帮助的情况下浏览了数十个类似的问题。
当我的asp.net 4.0应用程序尝试访问本地驱动器上的文件夹时显示此错误,执行此操作:
XmlTextReader confReader = new XmlTextReader (filename);
while (confReader.Read()) // <- error line
{
// do something
}
在我的web.config中,我有&lt; Identity Impersonate =“true”&gt;。对于我已分配完全访问权限的文件夹:
everyone
IIS APPPOOL\<custom apppoolname>
NETWORK SERVICE
调试应用程序,我可以在有罪的行之前设置一个评估此调用的监视器:
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
调用显示当前用户是IIS APPPOOL \&lt; custom apppoolname&gt;。
我使用的是带有Sp1的Windows 7 64位。我知道这可能是愚蠢的,但我已经花了很多时间在这上面。
修改:
问题在于变量“filename”,它指向正确的文件夹,但是对于配置问题,文件名丢失了(即内容是“c:\ data \”而不是“c:\ data \ file.xml” )。 Asp.net错误实际上令人困惑,因为我拥有访问该文件夹的所有权限。 DJKRAZE向我指出了正确的方向。
答案 0 :(得分:1)
以下是我建议检查的内容
where are you declaring filename..?
Does the file even exist..?
你对该文件夹有权吗?你试过运行VS作为管理员..?你有没有为网络应用程序设置虚拟目录...就像你有一些不正确的配置,但无法真正告诉这个行的代码System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
应该得出你的domain\\username or compuername\\username
很高兴FileName
就是
答案 1 :(得分:0)
IIS要求服务器计算机中文件夹的路径具有Anonymous
用户登录权限。
确保用户Anonymous
有权访问该文件夹。