“完全信任”中的“PolicyException:无法获取所需权限 - 无法查看原因

时间:2012-07-20 01:33:21

标签: asp.net iis-7 security code-access-security

这是一个由两部分组成的问题。

我正在尝试设置我们的Production(Live)托管架构的新部分,所以我试图将我们的Staging webserver指向新的Production内容共享(同一子网中另一台服务器上的UNC路径)

我目前正在收到可怕的 PolicyException:无法获取所需权限消息。

  • 用户上下文对内容共享的完整层次结构具有修改权限。
  • 我已将<trust level="Full" originUrl="" />添加到Web.config中(我很确定已经是这样了,不管怎么说)
  • 我有run caspol - 见下文
  • 我有checked the AppPool settings - 标识设置为相应的用户名,加载用户配置文件设置为True
  • 我刚刚设置了内容共享和IIS站点,所以我知道用户名和密码都是同步的(我做了仔细检查)。

更令人困惑的是,抱怨的程序集是我们的内部代码库之一。在ILSpy中对其进行反编译,我可以看到对

的引用
[assembly: SecurityPermission(SecurityAction.RequestMinimum,
   SkipVerification = true)]

,除了我不记得曾经在该程序集中添加任何代码访问安全性。引用Security的类中没有任何类具有声明性,当然也没有引用AllowPartiallyTrustedCallersAttribute or CodeAccessPermission.Assert

我对所涉及的所有服务器(包括网络服务器和拥有内容共享的服务器)拥有完全管理访问权限。

那么如何解决这个问题?

(我们是否可以将question #1846816转换为社区维基,其中包含所有可能的答案,而不是必须阅读带有不合格标题的数以万计的问题以及Google上的大量点击?o)


修改caspol -a -lg的(已修改)输出如下:

Microsoft (R) .NET Framework CasPol 2.0.50727.4016
Copyright (c) Microsoft Corporation.  All rights reserved.

Security is ON
Execution checking is ON
Policy change prompt is OFF

Level = Enterprise

Code Groups:

1.  All code: FullTrust

Level = Machine

Code Groups:

1.  All code: Nothing
   1.1.  Zone - MyComputer: FullTrust
      1.1.1.  StrongName - [snip]: FullTrust
      1.1.2.  StrongName - [snip]: FullTrust
   1.2.  Zone - Intranet: LocalIntranet
      1.2.1.  All code: Same site Web
      1.2.2.  All code: Same directory FileIO - 'Read, PathDiscovery'
      1.2.3.  Url - file://[some other my UNC share]\*: FullTrust
      1.2.4.  Url - [THIS UNC SHARE]\*: FullTrust
      1.2.5.  Url - [some other my UNC share]:\*: FullTrust
      1.2.6.  Url - file://[THIS UNC SHARE]\*: FullTrust
   1.3.  Zone - Internet: Internet
      1.3.1.  All code: Same site Web
   1.4.  Zone - Untrusted: Nothing
   1.5.  Zone - Trusted: Internet
      1.5.1.  All code: Same site Web

Level = User

Code Groups:

1.  All code: FullTrust
Success

2 个答案:

答案 0 :(得分:5)

有类似的问题。请将<trust level="Full" originUrl="" />替换为您应用的<trust level="Full" originUrl=".*"></trust>中的web.config
请注意新信任级别标记中的.*

答案 1 :(得分:0)

发现问题。

我不确定原因,但Windows认为有问题的分享位于Internet区域,而不是LocalIntranet

caspol -pp off -m -ag 1.3 -url "\\servername\web_content\*" FullTrust
caspol -pp off -m -ag 1.3 -url "file://\\servername\web_content\*" FullTrust

我已经修好了!