2009-09-28 16 views
0

我得到一个奇怪的问题,我似乎有读取权限,因为我可以 1.从目录中获取文件列表(Directory.GetFiles ()) 2.使用XmlDocument实例的Load()方法加载XML文档ASP.NET文件IO问题 - System.UnauthorizedAccessException - 比你想象的更陌生

但我无法使用File.ReadAllText()将文本文件加载到内存中。给我一个System.UnauthorizedAccessException。我甚至不试图从网络目录读取,只是本地目录。我还使用System.Security.Principal.WindowsIdentity.GetCurrent()。Name来检查工作用户是[CompanyDomain]/[MyUserName],并且此用户可以完全访问我正在使用的目录。我也检查过目录实际存在。

我的环境 1. Windows Server 2003标准版 2. Visual Studio 2008中 3.只需使用内置在推出每一次我运行该项目时Web服务器。

注意:我在这台机器上找不到IUSR_MACHINENAME用户。

任何想法我应该采取什么步骤?

干杯, 詹姆斯

回答

0

一件事断言:

  • ,可以是XML载入文件() - ED是不能ReadAlText()完全相同的文件 - ED?

当事情变得这样奇怪时,我发现在目录级别甚至是文件级别开启审计往往最终指向一个正确的诊断并因此解决问题。

另外:在对ReadAllText()寻找在线参考我注意的是(奇怪的是,我认为),这个异常可以由以下原因引起:

 
    path specified a file that is read-only. 

不知道为什么写访问应该通过这种明显的读寻求 - 只是操作,但是,也许只是试图使文件r/w能够。

+1

我认为“路径指定了一个只读文件”从MSDN帮助部分的文档编写者复制和粘贴东西只是结果...... ReadAllText方法在文件上打开一个StreamReader,然后在读取模式下打开一个FileStream,并以共享模式读取。 – KristoferA

+0

@KristoferA,谢谢你检查这个。我认为[MSFT文档编辑器的疏忽]可能就是这种情况,但确认这一点很好。因此,我猜想OP会留下我最初的建议,看看文件审计可以揭示什么,然后从那里拿走它... – mjv

+0

感谢您的帮助,原来是一个复制和粘贴错误,试图读取目录而不是文件 –

0
+0

请详细解释一下我看到 .NET配置参数是另一个可以在Web应用程序逻辑运行时定义账户的“另一个地方”,但我是不确定这个参数或缺少解释所描述的问题,即XML Load()工作,但不是ReadAllText()。 – mjv

+0

我只是试试。我通常怀疑你能做到一个而不是另一个;我希望看到您在您的主应用之外的较小应用程序中重现了这一点。 –

+0

我已经试过了,它不起作用。 –