在C#中拒绝访问该路径

时间:2016-04-13 17:53:30

标签: asp.net iis c#-4.0

我收到错误

  

{“访问路径'C:\ stored_PAC_history_10_4_2016.xml'是   拒绝。“}

当我执行以下代码db.save(path)的指令时,它修改位于ASP.Net项目中给定路径的文件。

 XDocument doc = XDocument.Load(path);
                    XElement root = new XElement("Command");
                    root.Add(new XElement("StartDateTime", _commandsLog.StartDateTime.ToString()));
                    root.Add(new XElement("CommandName", _commandsLog.CommandName));
                    root.Add(new XElement("Output", _commandsLog.Output));
                    root.Add(new XElement("UserOutput", _commandsLog.UserOutput));
                    root.Add(new XElement("Status", _commandsLog.Status.ToString()));
                    root.Add(new XElement("EndDateTime", _commandsLog.EndDateTime.ToString()));
                    root.Add(new XElement("UserName", _commandsLog.UserName));
                    doc.Element("CommandsLogs").Add(root);
                    doc.Save(path);

`

1 个答案:

答案 0 :(得分:1)

如果您在本地调试应用程序,您可能会确保运行具有管理权限的Visual Studio(即Right-click > Run as Administrator),因为从中生成的进程可能无法访问原本需要它的目录

否则,您可以检查以下某个角色的权限,具体取决于您使用的IIS版本,并确保其具有适当的权限:

  • IIS_IUSRS
  • IIS APPPOOL\DefaultAppPool
  • NETWORK_SERVICE

正如其他人所说,授予您的应用程序root权限不是一个好主意。如果您打算以任何类型的生产方式使用它(在本地计算机上运行的快速且脏的实用程序应用程序之外),您应该考虑在应用程序中使用子目录并从那里引用文件(即删除您尝试在项目中访问的文件,并相对于您的应用程序访问它们。