1

我有一个在 ASP.net 4.0 中开发并托管在 IIS7(ProdServer) 中的 Web 应用程序。在其中一个页面中,我正在创建一个文件并将其存储在 \someOtherServer\Storage\ 文件夹中。

当我登录到生产服务器并点击运行和 \someOtherServer\Storage\ 时,我可以浏览该文件夹。

当我运行我的 ASP.net 应用程序时,我收到错误访问路径“0”被拒绝。

异常详细信息:System.UnauthorizedAccessException:对路径“0”的访问被拒绝。

ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果应用程序不是模拟的,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。

要授予 ASP.NET 对文件的访问权限,请在资源管理器中右键单击该文件,选择“属性”并选择“安全”选项卡。单击“添加”以添加相应的用户或组。突出显示 ASP.NET 帐户,然后选中所需访问权限的复选框。

4

1 回答 1

5

您必须查看运行 ASP.net 站点的应用程序池的标识,并确保该帐户对另一台服务器上的资源具有权限。

要在 IIS 7 中执行此操作,请执行以下操作:

  • 打开 IIS 管理器并浏览到发生这种情况的站点。
  • 右键单击该站点并选择“管理应用程序”->“高级设置”。
  • 最上面的设置将显示您正在运行的应用程序池的名称。很可能它是 DefaultAppPool,但它也可能是其他东西(最好应该是其他东西)。
  • 现在取消并单击 IIS 管理器中的应用程序池节点,然后右键单击上面看到的应用程序池并选择高级设置。
  • 查看流程模型下的身份设置 - 这可能是 ApplicationPoolIdentity。要访问另一台计算机上的资源,您必须将其作为 NetworkService 或域帐户运行。我建议你先试一个,然后再试另一个。域帐户应该是一个密码不会过期的服务帐户(否则每次过期时您都必须在此处重新输入)。确保域帐户有权访问远程服务器上的共享资源。

希望对某人有所帮助。

于 2012-08-20T07:59:25.780 回答