【问题标题】:How do I configure my ASP.NET directory to allow writing a log file?如何配置我的 ASP.NET 目录以允许写入日志文件?
【发布时间】:2012-09-05 18:53:47
【问题描述】:

好的,所以我相信我在这里做的事情很简单。我写了一个 ASP.NET 网页,它只是试图写入本地目录。

我正在使用以下代码:

System.IO.File.WriteAllLines("log.txt", messages);

我抛出以下异常。

Access to the path 'c:\windows\system32\inetsrv\log.txt' is denied.

我的 ASP.NET 应用程序位于以下目录中。

c:\inetpub\wwwroot\sites\mysite\

所以我很困惑为什么当我不提供该目录本身时它试图写入 c:\windows\system32\inetsrv\ 目录。

我尝试将代码更改为以下代码,但它在新目录中给出了相同的错误消息。

System.IO.File.WriteAllLines("c:\\inetpub\\wwwroot\\sites\mysite\log.txt", messages);

编辑 1

很难接受这个答案,因为每个人都帮了我很多忙。我接受了 tom_yes_tom 的回答,因为他是第一个发表他的回复的人,这是我问题的前半部分。我的问题的另一半与 Fabio 指出的 hbrock 的解决方案有关。

【问题讨论】:

  • 您的 ASP.NET 应用程序的应用程序池以什么身份运行?

标签: c# asp.net iis


【解决方案1】:

创建文件夹“C:\inetpub\wwwroot\sites\mysite\App_Data”并将您的数据保存在那里。

System.IO.File.WriteAllLines(Server.MapPath("~/App_Data/log.txt"))

如果您绝对必须将其保存到 mysite 目录,请注意将日志文件放在那里并适当设置目录权限的安全后果。运行 IIS 的用户需要能够读取和写入该目录。

完整的合格路径:System.Web.HttpContext.Current.Server

【讨论】:

  • 我使用了这种方法,仍然得到同样的错误。拒绝访问路径“C:\inetpub\wwwroot\sites\mysite\production\App_Data\log.txt”
【解决方案2】:

这应该会有所帮助:

授予对特定文件的读取、写入和修改权限

在 Windows 资源管理器中,找到并选择所需的文件。

右键单击该文件,然后单击“属性”。

在“属性”对话框中,单击“安全”选项卡。

在“安全”选项卡上,检查用户列表。如果未列出网络服务帐户,请添加它。

在“属性”对话框中,单击“网络服务”用户名,然后在“网络服务的权限”部分中,选择“读取”、“写入”和“修改”权限。

点击应用,然后点击确定

信息来自:http://msdn.microsoft.com/en-us/library/ff647402.aspx#paght000015_fileaccess

【讨论】:

  • 我也遇到了这个安全问题。我的第一次尝试是在没有空格的情况下添加 NetworkService,但它无法识别安全对象,所以我放弃了这种方法,但正如 @Fabio Gouw 指出的那样,它需要一个空格。
【解决方案3】:

您收到“对路径 'c:\windows\system32\inetsrv\log.txt' 的访问被拒绝”。当您执行 System.IO.File.WriteAllLines("log.txt", messages) 时,因为 c:\windows\system32\inetsrv 是 IIS 可执行文件所在的目录(w3wp.exe)。

您必须使用 Server.MapPath,以便它为您提供虚拟目录的物理路径。

查看哪个用户正在运行您的虚拟目录的应用程序池,并授予他对您的虚拟目录文件夹的写入权限。

【讨论】:

  • 好的,所以我查看了应用程序池,它显示了 Identity->NetworkService。 NetworkService 不在实际站点目录的权限列表中。
  • 按照@hbrock 的说明为您的文件夹授予网络服务写入权限
  • 好的,我要再试一次。我曾尝试在没有空格的情况下进行 NetworkService,所以这可能是我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多