仅在覆盖文件时发生UnauthorizedAccessException

时间:2015-01-28 04:34:21

标签: c# asp.net .net asp.net-mvc-3 iis-7

我们正在将应用程序从ASPX迁移到MVC,并且最近部署了第一阶段。所以我们目前混合使用ASPX和MVC页面。

我们有一些功能可以读取/写入文件数据。代码使用FileStream打开,写入内容并保存到磁盘。代码会覆盖以前创建的文件。这段代码一直在努力。但是,在MVC部署之后不久,相同的代码将不会覆盖前一天创建的文件,但如果文件是在同一天创建的,则会覆盖。

因此,如果我手动删除昨天创建的文件,它将开始正常工作,如果我一遍又一遍地运行相同的功能,它将覆盖该文件。但如果我明天运行该功能,它将不会覆盖并抛出System.UnauthorizedAccessException

这是堆栈跟踪:

System.UnauthorizedAccessException: Access to the path 'D:\wwwroot\abc.xml' is denied.  
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)  
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)  
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)  
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)  
   at System.Xml.XmlDocument.Save(String filename) 

请帮忙......

1 个答案:

答案 0 :(得分:0)

请检查正在使用的AppPool的身份。该用户标识应具有对您正在执行此读写操作的目录的完全控制访问权限....这可能是一个原因。