服务器应用程序不可用-无法加载文件或程序集 System.Web,访问被拒绝

服务器应用程序不可用-无法加载文件或程序集 System.Web,访问被拒绝

我是一名开发人员,尝试在 Windows Server 2003(32 位)计算机上为 WCF Web 服务设置虚拟目录,并且我不断收到“服务器应用程序不可用”信息,并在事件日志中记录以下内容:

消息:无法加载文件或程序集“System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。访问被拒绝。

到目前为止我已经尝试过:

  • 仔细检查用于匿名访问控制的帐户(这是本地管理员)
  • 检查目录的权限C:\Windows\Microsoft.Net\Framework(ASPNET 具有读/写访问权限,我甚至授予了每个人访问权限)
  • 禁用和启用 ASP.Net v2.0 扩展
  • 在应用程序扩展列表中删除并重新创建 .svc 扩展名
  • 检查以确保 System.Web 存在于 GAC 中
  • 重新安装 .Net 框架 3.5 SP 1
  • 为虚拟目录提供自己的应用程序池
  • 融合记录没有告诉我任何有趣的信息

我无法理解 - 有另一个 .asmx Web 服务似乎在相同的 Web 服务器上以相同的设置完美运行。我错过了什么?

有什么技术可以用来解决这类权限问题?了解用户帐户及其尝试访问的路径很有用,但启用计算机审计策略中的失败事件似乎没有任何作用。

答案1

呃,我的错 - 这似乎是https://serverfault.com/questions/63675/server-unavailable-and-removed-permissions-on-net-sites-after-windows-update。我检查了服务本身所在目录的权限,一切正常。

我还注意到,在另一个问题中,FileMon 用于查看有关什么/谁无法访问什么的更详细信息。

答案2

您最近的评论可能包含关键信息。Filemon(或 processmon)是您在这种情况下的好帮手。如果您还没有使用过它,那么在生产服务器上运行它是安全的,免费,而且很容易理解。(只是不要让它捕获数据太久)

您遇到的权限错误可能来自 GAC 中的某些内容,因为 System.Web 应该从 GAC 调用。唯一的例外是开发人员将 System.Web.dll 放在 /bin 文件夹中。除非有人真正强化了服务器,否则权限不应该被锁定得那么严格。进程监视器应该会很快告诉您答案。

要捕获它,请将 Process Monitor 排队,开始捕获,刷新失败的页面,停止捕获,然后搜索单词“denied”。

答案3

有另一个 .asmx Web 服务似乎在相同的 Web 服务器上以相同的设置完美运行。我错过了什么

您是否试图在同一个端口和 IP 上运行不同的网站?您可以尝试更改其中一个网站的端口,或者关闭另一个网站吗?

这只是一种幻想。

相关内容