【发布时间】:2013-03-22 18:28:12
【问题描述】:
我知道这个问题已经被问过很多次了,但是我在没有帮助的情况下浏览了几十个类似的问题。
当我的 asp.net 4.0 应用程序尝试访问本地驱动器上的文件夹时显示此错误:
XmlTextReader confReader = new XmlTextReader (filename);
while (confReader.Read()) // <- error line
{
// do something
}
在我的 web.config 中,我有
everyone
IIS APPPOOL\<custom apppoolname>
NETWORK SERVICE
调试应用程序,我可以在被指控的行之前放置一个评估此调用的手表:
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();
调用显示当前用户是 IIS APPPOOL\
我使用的是带有 Sp1 的 Windows 7 64 位。我知道这可能很愚蠢,但我已经为此花费了大量时间。
编辑:
问题出在变量“filename”中,它指向正确的文件夹,但对于配置问题,文件名丢失(即内容是“c:\data\”而不是“c:\data\file.xml” )。 Asp.net 错误实际上令人困惑,因为我拥有访问该文件夹的所有正确权限。 DJKRAZE 为我指明了正确的方向。
【问题讨论】:
-
你在哪里声明文件名..?该文件是否存在..?你有那个文件夹的权利..?您是否尝试过以管理员身份运行 VS ..?您是否为 Web 应用程序设置了虚拟目录..听起来您也有一些配置不正确,但根据初学者的代码无法真正判断这一行
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();应该产生您的domain\\username or compuername\\username -
向我们提供堆栈跟踪中的调试信息。为了让我们帮助您,我们需要 f.cipriani 的详细信息!
-
如果 IIS 没有该目录的权限,那么它会抛出异常。通常最好使用网络本地帐户,以便它根据本地计算机执行请求。不冒充。
-
也是 UNC、本地路径等吗?确保 Windows 和 NTFS 帐户对该目录、共享、路径等具有 NTFS 权限。
-
@DJKRAZE 谢谢,就是这样,问题是“文件名”有一个有效的文件夹“xxx”的路径,但没有附加文件名(错误的配置,我的错)。实际上,我对错误消息感到困惑。如果您能将其作为答案,我将很乐意接受。