在网络共享或内部项目上编译网站时,请求类型为“System.Web.AspNetHostingPermission”的权限被拒绝。

10

我已经使用 Windows 7 有一段时间了,但自从升级后就一直没有使用过特定的传统内部网络应用程序。不幸的是,这个应用程序被设置为托管在内部网络服务器上的 ASP.NET 网站项目。当我在 Visual Studio 2008 中打开网站并尝试调试时,会收到以下编译器错误:

请求的类型 'System.Web.AspNetHostingPermission' 的权限失败

为了解决这个问题,对于 Windows Vista,我会将机器的 .NET 安全配置信任级别更改为本地内部网络的完整信任级别(此处提供的修复方案)。我相信此配置实用程序依赖于 mscorcfg.msc,从一些初步的研究中可以看出,它似乎是 .NET 2.0 SDK 的一部分。我尝试按照此Microsoft支持文章中的说明运行以下命令,但无济于事。

Drive:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\caspol.exe -m -ag 1 -url
"file:////\\computername\sharename\*" FullTrust -exclusive on

目前,在我的机器上安装了以下 .NET、ASP.NET 和 .NET SDK 组件:

  • Microsoft .NET Compact Framework 2.0 SP2
  • Microsoft .NET Compact Framework 3.5
  • Microsoft .NET Framework 4 Client Profile
  • Microsoft .NET Framework 4 Extended
  • Microsoft .NET Framework 4 Multi-Targeting Pack
  • Microsoft ASP.NET MVC 1.0
  • Microsoft ASP.NET MVC 2
  • Microsoft ASP.NET MVC 2 - Visual Studio 2008 工具
  • Microsoft ASP.NET MVC 2 - Visual Studio 2010 工具
  • Microsoft Windows SDK for Visual Studio 2008 .NET Framework 工具 - enu
  • Microsoft Windows SDK for Visual Studio 2008 标头和库
  • Microsoft Windows SDK for Visual Studio 2008 SDK 引用程序集和智能感知
  • Microsoft Windows SDK for Visual Studio 2008 SP1 工具
  • Microsoft Windows SDK for Visual Studio 2008 SP1 Win32 工具
  • Microsoft Windows Server 2008 (6001.18000.367) 的 Windows SDK
  • 我需要安装.NET 2.0 SDK吗? 我是否错误地使用了 caspol 命令? 是否还有其他我遗漏的内容呢?

    3个回答

    16

    在进一步研究后,我发现了Aaron Stebner撰写的博客文章,其中详细介绍了.NET Framework 2.0配置工具的安装Details about setup for the .NET Framework 2.0 configuration tool。Stebner详细说明了配置实用程序已从.NET可重新分发文件中删除,并仅放置在SDK中。几年前这不是个大问题,但现在社区依赖于更新的SDK并且只安装框架的可重新分发/紧缩版本,我们已经失去了访问.NET Framework 2.0配置工具的权限。

    微软的官方答案是使用代码访问安全策略工具(Caspol.exe)Configure Security Policy Using the Code Access Security Policy Tool (Caspol.exe)。不幸的是,这个命令行实用程序对我来说无法使用。然而,我不能排除用户错误导致其失败的可能性。

    最终,Stebner解决了我的问题,因为他提供了一个installer for the configuration tool。一旦我安装了配置实用程序,就可以按照我总结的以下步骤执行DotNetSlackers article System.Web.AspNetHostingPermission when Accessing Network or Intranet Projects using Visual Studio 2005

    更改本地机器的.NET安全设置,请转到

    开始菜单 > 控制面板 > 管理工具 > Microsoft .NET Framework 2.0 配置

    完全展开我的电脑并选择运行时安全策略。在右侧,选择调整区域安全性。保留默认选项(对此计算机进行更改)并点击下一步。选择本地网络,将信任级别更改为完全信任。然后选择下一步,再选择完成。重新启动Visual Studio,您就可以开始了。


    8
    尝试更改应用程序池设置中的Load User ProfileTrue
    在Windows 7中,默认设置为False。似乎在Windows Vista IIS 7中会自动为您设置这个选项。

    1
    这对在Visual Studio的Cassini下运行的东西也适用吗?我本地没有安装IIS。 - ahsteele

    -1

    这个问题也发生在我身上,解决方案很简单,我只需要为应用程序池用户添加物理文件的权限,然后进行IISReset,现在它已经可以正常工作了。


    2
    我已经将近两年没有考虑过这个问题了。你能否提供更多的上下文和一些屏幕截图来解释你的解决方案?就目前而言,这个答案有点含糊不清。 - ahsteele

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接