trust level 设成 medium 以后, 真是放个屁都不行, 你的代码别想顺顺当当运行. 那个白痴的 SecurityException 只会告诉你代码挂了, 绝对不会提供任何有用的线索帮你解决问题. 很久很久之前我把用到 AspNetPager 的网站传到服务器上, 第一次遇到这个问题. 从那以后, SecurityException 就不断地跳出来告诉你, 你的这个库不行, 你的那个控件不能用, 你的那个 ORM 用到了反射而这是不允许的, 你的那个啥啥啥也不行. 我靠干脆我全自己从头写得了. 我看 trust level 没必要有 full, medium 这样分级, 只要有两个级别就够了: 级别一,能用,
级别二,不能用这样分还简单痛快点.

解决方案 »

  1.   

    在SharePoint里面,不仅有用户的权限,还有代码的权限。比如,我们在安装一个自定义的WebPart的时候,默认的情况下是不能操纵文件夹的,如果你看一些教你怎么做WebPart的文章的话,你会发现很多都会教你修改web.config文件,把它的trust的level改成Full。<trust level="Full" originUrl="" />简单的说,这是一句不负责任的句话,意思就是给所有dll以所有的权限,如果你只是在自己机器上做点小实验,那没问题。如果是在正式的项目中,就会造成比较大的安全隐患。事实上,我们应该为我们的dll赋自定义的权限以杜绝安全隐患。首先,我们要创建包含自定义权限的config文件。到以下目录C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\CONFIG,找到文件wss_minimaltrust.config,这是微软定义的权限文件,默认用的就是他。拷贝一份,重命名为wss_custom_minimaltrust.config。
    找到以下节点:
    <CodeGroup 
        class="UnionCodeGroup"
        version="1"
        PermissionSetName="SPRestricted">
        <IMembershipCondition 
            class="UrlMembershipCondition"
            version="1"
            Url="$AppDirUrl$/*"
         />
    </CodeGroup>拷贝他,粘贴到他的前面,将PermissionSetName改为FullTrust,如果你的dll是放在bin目录下,名字叫ss.dll,那么你修改它的Url为"$AppDirUrl$/bin/ss.dll".保存他。再回到SharePoint的web.config文件,找到trustLevel节点,添加新的节点为
    <trustLevel name="WSS_Custom_Minimal" policyFile="C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\config\wss_custom_minimaltrust.config" />这样我们就把新的权限配置文件加入到了我们的站点中。在找到trust节点,修改为<trust level="WSS_Custom_Minimal" originUrl="" />这样我们就启用了我们自定义的权限配置,其他的都没变,只是把ss.dll的权限提高了。
      

  2.   

    非常无奈,这也不行,那也不行,非得自己弄个服务器。
    asp.net真实无法普及的。