更改应用程序池标识后 ASP.NET 应用程序中出现 UnauthorizedAccessException

更改应用程序池标识后 ASP.NET 应用程序中出现 UnauthorizedAccessException

我有一个在 Windows Server 2003 和 IIS 6 上运行的 SharePoint (MOSS 2007) 实例。在 IIS 中,我已通过 SharePoint 网站下的虚拟目录设置了一个 ASP.NET 应用程序。使用 URL 访问 SharePointhttp://companyportal并且使用 URL 访问 ASP.NET 应用程序http://companyportal/apps/Default.aspx。请注意,SharePoint 和 ASP.NET 应用程序使用相同的应用程序池。

最近,我决定将 ASP.NET 应用程序隔离到其自己的应用程序池中,这样它就完全独立于 SharePoint,从而不会对门户造成任何问题,无论出于何种原因它开始消耗过多的资源。

因此,我为 ASP.NET 应用程序创建了一个新的应用程序池。我按照以下步骤创建了一个新的服务帐户作为此新应用程序池的身份:MSDN 博客文章。我重新启动了新的应用程序池并浏览到 ASP.NET 应用程序。我观察到的行为是:

  • 该应用程序加载速度极慢。
  • 最终,显示应用程序页面,这意味着任何数据库调用等都已成功。
  • 最后,我看到一个System.UnauthorizedAccessException错误。由于 Visual Studio 2008 位于同一台服务器上,因此系统提示我打开 Visual Studio 即时调试器,尽管这并没有产生任何有用的信息。
  • 在事件查看器中,我看到以下错误:

    • 来源:ASP.NET 2.0.50727.0(事件 ID 1334)

      发生未处理的异常,进程终止。

      应用程序 ID:/LM/W3SVC/1/Root/apps

      进程 ID:3028

      异常:System.UnauthorizedAccessException

      消息:拒绝访问端口。

    • 来源:.NET Runtime 2.0 错误(事件 ID 5000)

      事件类型 clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d6968e,P4 系统,P5 2.0.0.0,P6 504057aa,P7 3bf9,P8 7a,P9 系统.unauthorizedaccess,P10 NIL。

在 Stack Overflow 上进行进一步搜索后,我执行了以下步骤:

aspnet_regiis.exe -GA 域\用户名

这有助于加快应用程序的加载速度,但上述错误仍会继续出现在事件查看器中。

如果我使用相同的服务帐户运行 SharePoint 应用程序池,则不会出现任何这些问题,但当我使用新的服务帐户时,问题就出现了。所以我相信这与我设置服务帐户的方式有关,但不确定我遗漏了什么!

答案1

您是否将自定义用户添加到 IIS_WPG 组?这是 IIS6 的要求。运行 aspnet_regiis -GA 将授予 IIS_WPG 负责的部分权限,但不是全部。

另外,请确保您的自定义帐户至少具有磁盘的读取权限,尽管这不是您提到的错误的具体原因。

相关内容