【问题标题】:Request for the permission of type 'System.Web.AspNetHostingPermission"请求“System.Web.AspNetHostingPermission”类型的权限
【发布时间】:2012-11-16 05:13:54
【问题描述】:

我在运行我的网站时遇到了问题。

我已经开发了网站,当我点击 F5 查看结果时,我遇到了这个错误

说明:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:请求“System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限失败。

我该如何解决这个问题。

【问题讨论】:

  • 将 FullTrust 权限授予远程共享。
  • 分享是什么。可以举个例子吗
  • Sharename 是您尝试连接的文件夹的名称。
  • 我正在从我的 vs2008 中按 F5 以在 localhost 中运行该网站。所以我的共享名是我的网站代码所在的文件夹的名称。对吗?

标签: c# asp.net localhost


【解决方案1】:

如果您在网络驱动器上映射应用程序文件夹或从 UNC 路径打开解决方案文件,通常会发生此错误。像这样的东西:

无效示例:\\my-server\my-project

尝试从直接路径打开您的解决方案

有效示例:C:\Project\MyProject

您也可以更改您的 App Pool Identity 权限,但不建议这样做:

Web 服务器 (IIS) > 应用程序池标识 > 高级设置 > 将标识设置为 网络服务

【讨论】:

  • +1 根据我的发现,这在网络上是相当无证的,但现在已经让我发现了两次。感谢分享。
  • 这是确认此问题的官方 Microsoft 支持文章以及建议的修复:support.microsoft.com/en-us/kb/320268
  • 谢谢,这成功了,必须标记为答案。在我的环境中不允许管理员权限。
  • 对于 Go daddy,我刚刚在 web.config 中进行更改,请查看 this
  • 但是,如果网络驱动器中的所有解决方案文件都指向 TFS,会发生什么?
【解决方案2】:

对我有用的一次性解决方案是将应用程序池 Identity(高级设置)设置为 Network Service

【讨论】:

    【解决方案3】:

    尝试将应用程序池的“加载用户配置文件”值设置为“真”。 它对我有用。

    【讨论】:

      【解决方案4】:

      不管怎样,我发现部署服务器上的AjaxControlKit.dll 被阻止了。为了解决这个问题,我将 dll 复制到一个新文件夹,然后复制并粘贴到 bin 文件夹中。我猜.net 不喜欢将 dll 直接复制到 web 文件夹中

      【讨论】:

      • 仅供参考,我遇到过两次这个问题。第一次,@Shrink 的 32 位解决方案就是答案。这一次,需要解锁 AjaxControlToolkit.dll。只是表明这些答案中的任何一个都是有效的。
      【解决方案5】:

      您可以运行以下命令将 FullTrust 授予远程共享:

      C:\Windows\Microsoft.NET\Framework\v2.0.50727>caspol.exe -m -ag 1 -url "file:////\yourcomputername\yoursharename*" FullTrust -exclusive on

      希望这会有所帮助。

      【讨论】:

      • 像魅力一样工作!非常感谢。顺便提一句。运行此命令后不要忘记重新启动应用程序池
      【解决方案6】:

      我尝试了此处和其他许多地方发布的所有解决方案,但没有任何效果。在我尝试在我的项目中使用 AjaxControlToolkit 2.0 之前,我的项目位于网络驱动器上。显然,有关网络驱动器权限的某些内容不允许工具包中的控件运行。我将我的项目移回本地硬盘,一切都开始工作了。

      【讨论】:

        【解决方案7】:

        我也遇到过这个问题,但在任何地方都没有看到这个特定的解决方案。

        在检查 IIS 用户的权限、模拟用户并授予应用程序完全信任后,仍然出现错误,我在运行 IIS 的服务器上安装了 Procmon.exe 并注意到 IIS 试图访问某些 Framework64违规网站的文件。我检查了应用程序池高级设置,发现“启用 32 位应用程序”设置为 false。将此设置更改为 true 被证明是正确的操作。生活是美好的。

        【讨论】:

        • 很高兴它有帮助!
        【解决方案8】:

        我遇到了同样的问题,然后我意识到我正在从远程文件夹运行解决方案。将必要的文件复制到本地文件夹将解决该问题。但请确保您的文件夹具有完全权限

        【讨论】:

          【解决方案9】:

          虽然此页面上的所有其他答案可能是任何人的问题的原因,但最常见的原因是 Windows Server 2012 及更高版本中的操作系统安全更改。从 Internet 下载的任何文件都会被 Windows 标记为可疑文件,并且需要在 IIS 中使用之前手动解除阻止。因此,如果您 FTP 代码、通过电子邮件发送代码或通过云提供商传输代码,它将被标记和阻止。

          最好的解决方案是使用 Visual Studio 中内置的 Web 发布工具,或者如果您在域中,则通过网络共享进行传输,每种方法都可以避免此问题。但是,如果您必须通过上述方式之一将代码复制到另一台服务器,则应在传输之前压缩所有内容,这样您就只剩下一个文件可以解除阻止。如果在解封之前解压,那么每个文件都会被封禁,多选不会给你解封的选项。

          所以最后...解除阻止:右键单击文件并选择属性。在靠近底部的第一页上,您会看到一个取消阻止按钮以及该文件是从 Internet 下载的警告!

          【讨论】:

            【解决方案10】:

            如果使用此选项编译 dll(不要合并。为每个页面和控件创建单独的程序集),请确保 dll 是最新的。由于aspx文件是新文件,我遇到了错误,但dll仍然使用旧文件。

            【讨论】:

              【解决方案11】:

              我找到了一个适用于我的系统的潜在解决方案,无需更改为 Network Service

              转到应用程序池 -> 高级设置 -> 进程模型 -> 加载用户配置文件:True

              Source of this answer.

              【讨论】:

                【解决方案12】:

                解决此问题的最佳方法是以“管理员”身份运行 Visual Studio。右键单击 Visual Studio 图标并选择“以管理员身份运行”。

                使用完全管理员权限打开 Visual Studio 后,您将能够毫无问题地访问该页面。

                【讨论】:

                  【解决方案13】:

                  我遇到了这个错误,它似乎是一个一般性错误。由于这个问题有几个答案,我将添加我的。在远程服务器上重新发布网站似乎可以解决我的问题。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-30
                    • 2011-02-15
                    • 2012-08-13
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-10
                    相关资源
                    最近更新 更多