应用程序尝试执行安全策略不允许的操作

时间:2014-04-15 12:48:58

标签: asp.net

我在Visual Studio 2008中开发了一个Asp.net网站,使用Vista操作系统时工作正常,但我的工作站升级到Windows 7,现在出现以下错误:

  

安全异常说明:应用程序尝试执行   安全策略不允许的操作。授予这个   申请所需的权限请联系您的系统   管理员或更改应用程序的信任级别   配置文件。

     

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

我在Visual Studio中运行本地计算机时出现此错误...我已经用Google搜索了错误但到目前为止我找不到任何帮助。部署在服务器上时,我没有收到错误,只是在我的本地。

网站引用我在同一解决方案中创建的.dll项目。当我尝试实例化其中任何一个.dll项目中包含的对象时,似乎会发生错误。

Web.config中的此设置没有帮助:

<trust level="Full" originUrl="" />

既没有这样做:

<securityPolicy>
    <trustLevel  name="Full" policyFile="internal" />
</securityPolicy>

6 个答案:

答案 0 :(得分:3)

这是一个老问题,但我最近遇到了这个确切的问题,因为问题存在于本地计算机上,而不是像其他大部分信息因为这个特定错误所带来的远程问题,没有一个解决方案帮助我这样做我的解决方案。

我的问题是我使用网络工作站并尝试运行存储在网络驱动器上的解决方案。出于某种原因,我的本地计算机不信任该特定驱动器,并且它不会接受任何提高应用程序信任级别的尝试。

一旦我意识到问题是驱动器本身,我只是将整个解决方案移到另一个解决方案上,它解决了我的问题。我想与网络管理员讨论他们的权限可能也有助于纠正错误,但只是将解决方案切换到本地驱动器修复了我遇到的问题并可能对其他人有用。

答案 1 :(得分:1)

解决

要解决此问题,请将FullTrust权限授予远程共享:

  1. 在Web服务器上,打开“管理工具”,然后双击“Microsoft .NET Framework配置”。

  2. 展开“运行时安全策略”,展开“计算机”,然后展开“代码组”。

  3. 右键单击All_Code,然后单击“新建”。

  4. 选择“创建新代码组”。为您的代码组提供相关名称,例如应用程序共享的名称。单击“下一步”。

  5. 在“选择此代码组的条件类型”列表中,选择“URL”。

  6. 在“URL”框中,按以下格式键入共享的路径: LocalDate

  7.   

    注意将computername替换为托管远程共享的计算机的名称。将共享名称替换为共享名称。

    1. 单击“下一步”。在下一页上,选择“使用现有权限集”,然后选择“FullTrust。”

    2. 单击“下一步”,然后单击“完成”。

    3. 重新启动Microsoft Internet信息服务(IIS)以重新启动ASP.NET辅助进程。

    4. 如果“管理工具”下未显示“Microsoft .NET Framework配置”,则可以安装.NET Framework SDK以添加Microsoft .NET Framework配置。或者,您可以运行以下命令进行更改:

      file:////\\computername\sharename\*

      有关详情:https://support.microsoft.com/en-us/kb/320268

答案 2 :(得分:1)

这对我有用。在 web.config 添加

<system.web>
   <trust level="Full" />
</system.web>

答案 3 :(得分:0)

试试这个

转到预编译dll的属性,检查它是否有以下安全消息(位于窗口底部):“此文件来自另一台计算机,可能会被阻止以帮助保护此计算机。”如果存在,请单击“取消阻止”,“应用”和“确定”。

运行以下caspol命令解决问题Drive:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ caspol.exe -m -ag 1 -ur file:////c:\mysitecontent\* FullTrust -exclusive on

注意:请将c:\mysitecontent\*替换为ASP.net预编译DLL所在的实际路径。

然后重启系统。

如果它帮助你投票请。

答案 4 :(得分:0)

解决方案

(1)使用Internet信息服务(IIS)为适当的域创建应用程序池。登录到远程桌面并打开IIS管理器。展开树应用程序池。右键单击并选择New |申请池并提供所需的详细信息。

(2)下一步是将域放在新创建的应用程序池下。要执行此操作,请展开标记为“网站”的树,然后展开其下的“默认网站”。选择您的域名,右键单击它,然后选择“属性”菜单项。选择标记为Application pool的下拉框,然后选择新创建的应用程序池名称。

注意:如果已在服务器上安装了某些常用的主机控制面板,则可以自动执行上述步骤。

(3)将以下代码行添加到machine.config文件中。此文件可以位于该文件夹下 - 根驱动器名称:\ WINDOWS \ Microsoft.NET \ Framework \ v1.1.4322 \ CONFIG

<location path="yourdomain.com" allowOverride="true">
   <system.web>
     <trust level="Full" originUrl=""/>
   </system.web>
</location>

(A)您应该要求服务器的管理权限和远程桌面访问权限以解决上述问题。如果您无权访问服务器,则应联系您的托管服务提供商。

(B)将yourdomain.com替换为发生问题的相应域名。

警告:对machine.config文件的错误修改将导致服务器上的ASP.NET服务出现问题。

答案 5 :(得分:0)

我得到了同样的错误......所以我解决了两个步骤。首先,在web.config文件中添加代码。                                     

第二,更改IIS Manger。 在IIS中选择服务器。管理下单击/打开功能委派。然后,将.NET Trust Level更改为Read / Write(从右侧Action面板)

谢谢