asp.net - IE 中托管的用户控件呈现为文本框

标签 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 异常(exception)来授予 FullTrust 不会改变任何东西。
  • 配置文件可通过 Web 访问,layout.xml 可访问,ASMX 显示预期的命令列表
  • Machine.config 授予 usercontrol.config 文件的 GET 权限。

  • 对我来说可能看起来很可疑的事情:
  • DataExport UserControl 引用 Aspose.Excel 来生成它导出的电子表格。
  • 当我导航到页面并获得一个空白文本框时,然后运行 ​​gacutil /ldl ,本地下载缓存中没有任何内容。在工作机器上,查看页面后运行相同的命令会显示 DLL 的 list ,包括控制 DLL 和 Aspose DLL。
  • 最佳答案

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

    ...

    如果您为调试而编译并在加载控件后附加到 IE 以进行“托管”调试,则调试控件很容易。如果您无法加载控件,请在 fusion 程序集绑定(bind)查看器上查找信息:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打开 IEHost 跟踪:http://support.microsoft.com/kb/313892为了调试加载过程。

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

    ...

    该答案中还有其他链接可以帮助您了解有关 IE 托管控件的信息,但听起来您已经通过它们了。

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

    关于asp.net - IE 中托管的用户控件呈现为文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2963129/

    相关文章:

    java - 如何阅读使用未知的随机所有者密码创建的 PDF?

    docker - Aspose Word v18.8.0 中的“SkiaSharp.SKImageInfo”异常

    java - 从 docx 转换后尝试在 html 中添加一些内容时,文本重叠

    javascript - 脚本未加载到对话框模式中

    wpf - 如何在 DataGrid.DataGridTemplateColumn 内设置 UserControl 的 DataContext?

    wpf - 通过 WCF 或类似方式发送 WPF 用户控件

    silverlight - 在 Silverlight 中从 View 模型绑定(bind)到子用户控件的 View 模型? 2 个来源 - 1 个目标

    c# - ASP .NET MVC 表单字段验证(无模型)

    c# - 将 Mysql 数据填充到 asp 日历加载时间太长

    javascript - 在窗口大小调整时调整 html 元素的大小