我在Intranet上的两台计算机PC1和PC3上托管了一个相同的asp.net应用程序。 .NET控件使用object标签托管。在PC1上执行时,以下三个URL正常工作:
http://pc1/test/test.aspx (另外两个网址已将pc1替换为pc3和localhost)
IE v8中的所有三个URL都显示带有.NET控件的页面。
但是相同的网址在PC3上不起作用。它们的控制用一个小的红色X符号表示。
在第二台机器上,Fiddler视图显示正在正确下载.NET dll,但融合日志和IEHost日志没有显示任何内容。第一个机器融合日志和IEHost日志显示预期的报告。
两台计算机上的IE都设置为包含受信任区域中的所有三个网址。受信任区域的.NET2管理信任设置为FullTrust。另外,我为pc1和pc3创建了代码组以提供FullTrust。
为什么第二台机器上的IE无法显示.NET控件?另外,为什么没有创建IEHost和融合日志?
答案 0 :(得分:2)
您可能知道,IE8阻止在Internet区域中使用.NET UserControls。 http://blogs.msdn.com/ieinternals/archive/2009/10/09/DotNet-UserControls-Do-Not-Load-in-IE8-Internet-Zone.aspx
也许控件不起作用的机器还为可信区域设置了URLAction2005?
您是否尝试将.NET控件的其他IE Zone安全设置更改为“提示”以查看是否收到提示?您是否尝试使用该计算机加载其他人的.NET控件?该机器是否有一个.NET加载项可以将.NET1.1框架加载到IE进程中,从而阻止加载2.0框架?
答案 1 :(得分:2)
感谢Eric和Aaron帮助我解决这个问题。事实证明,IE中安装的McAcfee网站顾问插件阻止了对.NET控件的访问。虽然,很奇怪它将允许窗体上的ActiveX控件。在.NET控件进入IEHost.dll之前,似乎McAfee确实拥有与.NET相关的权限检查。我已禁用McAfee Site Advisor来解决此问题。
答案 2 :(得分:1)
听起来你已经正确设置了所有内容。
你可能想要检查的一件事,这可能是黑暗中的一个镜头,是PC3上的临时Internet文件。确保程序集实际上正在那里下载。如果你有很多旧文件,你可能会超出你的限制。
我会清除您的Internet临时文件,然后重试。此外,检查您的Temporary Internet Files文件夹以查看它是否确实存在。如果由于这个原因没有保存,那就解释了为什么融合日志没有看到任何东西。