【问题标题】:ASP.NET + Access to the path is deniedASP.NET + 对路径的访问被拒绝
【发布时间】:2016-06-04 02:54:01
【问题描述】:

我有一个 ASP.NET 应用程序,它在运行时尝试在 Web 服务器上写入文件。在我的开发环境中,这是可行的。但是,当我将其部署到生产服务器并执行代码时,我收到一条错误消息:

"Access to the path 'C:\Inetpub\wwwroot\MyWebApp\DirToWriteTo\' is denied."

我的生产服务器是 Window Server 2003 机器。 Web 应用程序设置为允许通过 IUSR_TEMPLATE 帐户进行匿名访问。

我做错了什么?

谢谢!

【问题讨论】:

    标签: asp.net


    【解决方案1】:

    您需要向NETWORK SERVICE用户提供授予权限

    你可以查看这个链接:-

    http://repeatgeek.com/technical/asp-net-access-to-path-is-denied/

    【讨论】:

      【解决方案2】:

      最可能的问题是您的匿名用户没有对该位置的写入权限。

      我要做的是为您要写入的位置创建一个web.config 条目,并将该配置键用作您的可写目录。如果需要,这将允许您对生产服务器和开发机器进行单独配置。

      接下来,只需将配置中定义的目录的写入权限授予用户 IUSER_TEMPLATE,或者正如 Thorarin 所说的网络服务,在这种情况下,您应该在您的 Web 中设置身份模拟.config 以便您可以指定用户(除非您通过应用程序池配置用户)。这应该可以解决问题。

      【讨论】:

      • 仅当Web.config<system.web> 部分中有<identity impersonate="true" /> 时。否则使用应用程序池的标识集。默认情况下,即 Network Service(访问权限非常有限)
      • 确实如此。起初我没有想到这一点。我会更新我的答案以包含它。
      【解决方案3】:

      如果您有 Windows 2008 或更高版本,请尝试将写入权限授予 IIS_IUSRS

      (网络服务过去也为我工作过。从我读到的here 来看,这取决于服务器操作系统。)

      【讨论】:

        【解决方案4】:

        在我的例子中,Visual Studio 2015 将现有项目的 IIS AppPool 用户更改为默认的 DefaultAppPool,这给了我权限错误、配置错误、角色提供程序错误和空引用错误。在发现这一点并将其更改回设置文件夹权限的应用程序池后,事情又开始工作了。

        【讨论】:

          猜你喜欢
          • 2013-12-15
          • 1970-01-01
          • 1970-01-01
          • 2021-04-02
          • 2017-12-12
          • 1970-01-01
          • 1970-01-01
          • 2017-01-24
          • 1970-01-01
          相关资源
          最近更新 更多