zoukankan      html  css  js  c++  java
  • 虚拟主机上asp.net运行权限不足问题及解决

    有些时候我们写的asp.net应用程序是运行在虚拟主机上。有一些虚拟主机可能是由于安全的考虑,对asp.net做了权限设置,会导致我们的应用程序无法正常运行。

    问题现象:
         由于某种原因,asp.net不能加载某些dll文件,出现如下错误提示: Server Error in '/' Application.
    问题分析:

        根据我的观察,asp.net应用程序直接生成的dll可以正常加载,由asp.net直接调用的外部dll也可以正常加载,但是仅被外部dll引用的其他外部dll不能加载。我的猜想是:由于权限是不完全的,asp.net应用本身生成的dll和直接引用的dll可以通过权限的继承获得权限,而仅被外部dll引用的其他外部dll因为权限的限制不能继承权限,因此出现了权限不足的问题。

      问题解决:

        通过在我电脑的试验,推测虚拟主机上修改了根web.config(在我电脑上其位置为C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG)的设置.
        默认web.config的权限设置节如下:

    <location allowOverride="true">
            <system.web>
                <securityPolicy>
                    <trustLevel name="Full" policyFile="internal" />
                    <trustLevel name="High" policyFile="web_hightrust.config" />
                    <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
                    <trustLevel name="Low"  policyFile="web_lowtrust.config" />
                    <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
                </securityPolicy>
                <trust level="Full" originUrl="" />
            </system.web>
    </location>

        推测虚拟主机上修改之后的设置:

     <location allowOverride="false">
            <system.web>
                <securityPolicy>
                    <trustLevel name="Full" policyFile="internal" />
                    <trustLevel name="High" policyFile="web_hightrust.config" />
                    <trustLevel name="Medium" policyFile="web_mediumtrust.config" />
                    <trustLevel name="Low"  policyFile="web_lowtrust.config" />
                    <trustLevel name="Minimal" policyFile="web_minimaltrust.config" />
                </securityPolicy>
                <trust level="High" originUrl="" />
            </system.web>
    </location> 

       他首先设置了allowOverride为false,这就阻止了在用户web.config中重新定义权限的能力。然后,他定义trust level为High,而不是默认的Full。经我测试,只要trust level不为Full,仅被外部dll引用的其他外部dll就不能被加载。 因此,我建议技术支持将allowOverride节设置为true。这样我就可以在web.config中重新指定权限了。

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

        最近已经不研究aps.net了,因此也没有认真去查找深层的原因,或许我的认识还有误。希望那位高手可以道出深层的原因,或指正我的错误。


    以上转自互联网,其实,举个最简单的例子就是如果要使用kaneboy的空间就必须在web.config里修改trust level="Full"才行

  • 相关阅读:
    Java笔记(06):如何使用JDK提供的帮助文档
    Java笔记(05):面向对象--继承
    MySql:基本SQL
    Oracle:简单SQL程序、存储过程、触发器
    Oracle:批量操作、视图、序列、简单SQL程序
    力扣(LeetCode)两整数之和 个人题解
    力扣(LeetCode)买卖股票的最佳时机 个人题解
    力扣(LeetCode)环形链表 个人题解
    力扣(LeetCode)找不同 个人题解
    力扣(LeetCode)从不订购的客户-数据库题 个人题解
  • 原文地址:https://www.cnblogs.com/fangbo/p/1571818.html
Copyright © 2011-2022 走看看