安全异常(应用程序尝试执行不被安全策略允许的操作)

19
我们在尝试打开管理员登录页面时遇到以下安全异常问题。
 Security Exception
 Description: The application attempted to perform an operation not allowed by the security policy.
To grant this application the required 
permission please contact your system administrator or change the   application's trust level in the configuration file. 


 Exception Details: System.Security.SecurityException: Request failed.

首先,我们使用会员资格进行用户认证操作。我们有两个不同的应用程序,一个用于管理员,另一个用于用户,每个应用程序都有自己的Web.Config文件。

用户数据上传到wwwroot目录,而管理员数据上传到wwwroot/admin目录。在管理员WebConfig中,我们将Login.aspx定义为管理员的默认页面(当用户输入mysite.com/admin时),并为管理员创建了一个虚拟目录(因为我们有两个Web.Config文件),名称为/admin,路径为mysite.com/wwwroot/admin

有趣的是,在某些其他项目中,我们使用相同的方法(具有相同的会员资格和Web.Config以及相同的主机),它们工作良好,并且在我们的一些项目中偶尔出现了上述问题(并非总是出现),尽管设置和基础设施对于所有项目都是相同的。

我们还有app_Webreference文件夹用于一些Web服务,这可能是问题的原因,但我不确定。我们尝试更改安全信任级别,但主机不允许我们这样做,如果是主机的问题,为什么我们的其他网站没有此问题,所以目前我不知道问题似乎是什么,但它真的很棘手,请帮助我。

非常感谢!

3个回答

18

我也帮忙了,只在web.config中添加了几行代码来允许我的Web应用程序使用完全信任级别(full trust level)

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

11

我在MSDN上发现了这篇文章,认为它与问题相关(异常细节似乎相同)。它表示适用于ASP.NET 1.0和1.1,但它也来自2005年10月,因此可能没有更新到明确说明您正在使用的版本(假定>=4.0):

"如何解决安全性异常(ASP.NET)?" by Anand Narayanaswamy MVP.


症状

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

异常:

System.Security.SecurityException: Request Failed
原因: 上述错误是因为该域名未在IIS的自己应用程序池下,并且服务器上机器配置文件中缺乏适当的信任级别。

解决方法

  1. 使用Internet Information Services(IIS)为相应的域创建应用程序池。登录远程桌面并打开IIS管理器。展开树形应用程序池。右键单击并选择新建 | 应用程序池,然后提供必要的详细信息。

  2. 下一步是将域名放置在新创建的应用程序池下。为执行此操作,请展开标记为Web Sites的树形目录,然后展开其中的Default Web Site。选择您的域名,右键单击并选择属性菜单项。选择标记为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 服务出现问题。


2

我刚刚解决了这个问题,它可能对后来的读者有用。

  • 打开 IIS 管理器 (ctrl+r inetmgr)
  • 进入您的站点的"特性视图"
  • 单击 ".NET 信任级别"
  • 将您的站点信任级别设置为完全(internal)

或者

将以下内容插入站点的web.config文件:


Original Answer:最初的回答
<system.web>
        <trust level="Full" />
  </system.web>

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