我已经设置了一个activex控件来在网页上运行。服务器能够将此网页提供给自己,但Intranet和Internet上的其他计算机无法访问它。
Caspol设置如下所示:
代码组:
1. All code: FullTrust
1.1. Zone - MyComputer: FullTrust
1.1.1. StrongName - (omitted) : FullTrust
1.1.2. StrongName - 00000000000000000400000000000000: FullTrust
1.2. Zone - Intranet: FullTrust
1.2.1. All code: Same site Web
1.2.2. All code: Same directory FileIO - 'Read, PathDiscovery'
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
1.6. Url - http://MYSERVERNAME/APPLICATIONNAME/*: FullTrust
Success
我尝试访问的应用程序是1.6组。我在这里做错了吗?
[编辑] 值得一提的是,尝试从Intranet访问控件的计算机上的IEDebug错误日志显示了一个很长的异常。最值得注意的是:
System.Net.WebPermission
The first permission that failed was:
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
答案 0 :(得分:4)
很久以前我在某地读过.Net usercontrols,Url证据不起作用。只有站点和区域证据有效。
caspol -machine -quiet -addgroup Trusted_Zone -site mysite.com FullTrust -name mysite -description "Code group granting trust to code from mysite.com"
您可以为每个区域执行此操作。
使用IE8时,请确保将mysite.com添加到“可信站点”列表3。我不确定保护模式是否必须关闭。
当你使用64位系统时,有两个caspol,具有不同的权限:
我花了很多时间在32位caspol上设置权限,然后将我的头撞到墙上,因为它不起作用。事实证明我使用的是64位IE8,因为它创建了一个IEDebug.log。最好在两个版本上设置权限。
答案 1 :(得分:0)
事实证明,这根本不是信任问题。应用程序运行所需的DLL不在应用程序的bin目录中。因此,应用程序试图从GAC中提取所需的DLL,这是不正确的。部署所需的DLL修复了该问题。
作为旁注 - 这是一个非常过时的软件交付机制,希望它不再被使用。调试这些类型的错误要比它应该困难得多。建议选择比嵌入式控件更好的传送机制。