在IE中托管的usercontrol呈现为文本框

时间:2010-06-03 03:19:21

标签: asp.net user-controls aspose

在我正在进行的传奇故事中,我想要在一个干净的盒子上托管遗留应用程序,我已经遇到了下一个问题。一个页面依赖于一个大的.NET UserControl,它在新机器上只渲染为一个大的,灰色的textarea(右边缘的灰色垂直滚动条。检查源显示预期的object标记。)

这一点特别棘手,因为似乎没有人知道托管的UserControls和所有讨论数据到2002 - 2004年。

页面非常简单:

<%@ Page language="c#" Codebehind="DataExport.aspx.cs" AutoEventWireup="false" Inherits="yyyyy.Web.DataExport" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<html>
  <head>
    <title>DataExport</title>
    <link rel="Configuration" href="/xxxxx/yyyyy/DataExport.config">
  </head>   
    <body style="margin:0px;padding:0px;overflow:hidden">
        <OBJECT id="DataExport" style="WIDTH: 100%; HEIGHT: 100%; position:absolute; left: 0px; top:0px"
            classid="yyyyy.Common.dll#yyyyy.Controls.DataExport"
             VIEWASTEXT>
        </OBJECT>
    </body> 
</html>

引用的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="yyyyy">
            <section name="dataExport" type="yyyyy.Controls.DataExportSectionHandler,yyyyy.Common" />
        </sectionGroup>
    </configSections>
    <yyyyy> 
        <dataExport>
            <layoutFile>http://vm2/xxxxx/yyyyy/layout.xml</layoutFile>      
            <webServiceUrl>http://vm2/xxxxx/yyyyy/services/yyyyy.asmx</webServiceUrl>
        </dataExport>   
    </yyyyy>    
</configuration>

我检查了什么:

  • 安全权限应该没问题,网站是受信任的,并且添加URL例外以授予FullTrust不会更改任何内容。
  • 配置文件可通过Web访问,layout.xml可访问,ASMX显示预期的命令列表
  • Machine.config授予usercontrol.config文件的GET权限。

对我来说可能看起来很可疑:

  • DataExport UserControl引用Aspose.Excel来生成它导出的电子表格。
  • 当我导航到该页面并获得一个空白文本框,然后运行gacutil /ldl时,本地下载缓存中没有任何内容。在工作机器上,查看页面后运行相同的命令显示DLL的清单,包括控件DLL和Aspose DLL。

2 个答案:

答案 0 :(得分:1)

这实际上取自我给出的一个完全不同的问题:Creating and deploying an ActiveX control in .NET

...

如果您编译调试并且在获得控件加载后连接到IE以进行“托管”调试,则可以轻松调试控件。如果无法加载控件,请在fusion程序集绑定查看器中查找信息:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打开IEHost跟踪:http://support.microsoft.com/kb/313892以调试加载过程。

确保对每个版本的程序集进行版本控制。如果你不这样做,那么IE会感到困惑,当下载缓存中的程序集不同但版本号与url引用的版本相同时(gacutil / cdl清除.net下载缓存)时,它将不会加载控件/ p>

...

在IE托管控件的信息答案中还有其他链接可能会有所帮助,但听起来你已经通过它们了。

控件可能无法加载的另一个原因取决于您正在使用的IE版本。 IE8要求控件来自Intranet或受信任区域。我不知道这在IE9中是否有所改变。但值得注意的是,“localhost”不在Intranet区域中,默认情况下不在受信任区域中。这通常会使正在测试Web服务器上的客户端UI的人员绊倒。

答案 1 :(得分:0)

我会用IE 6修补虚拟干净的XP SP3盒子。关闭IE 6中的所有安全设置,看看它是否呈现。如果它确实有效,你知道它与环境和代码有关。