asp.net – 用户控件托管在IE中呈现为一个文本框

前端之家收集整理的这篇文章主要介绍了asp.net – 用户控件托管在IE中呈现为一个文本框前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我正在进行的反思中,将一个遗留应用程序的主机映射到一个干净的盒子上,我打了我的下一个标签.一个页面依赖于一个大的.NET UserControl,新的机器上只显示一个大的,灰色的文本区域(右侧边缘是灰色的垂直滚动条),检查源显示预期的对象标签.)

这是特别棘手的,因为没有人似乎很了解托管的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.

解决方法

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

如果您编译调试并且一旦得到加载控件,就将其附加到IE进行“受管理”调试,这很容易进行调试.如果无法控制加载,请查看融合组合绑定查看器:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx上的信息以及如何打开IEHost跟踪:http://support.microsoft.com/kb/313892以调试加载过程.

确保将版本的每个版本的程序集.如果不这样做,IE将被困惑,当下载缓存中的程序集不同但与url引用的版本号相同(gacutil / cdl清除.net下载缓存)时,不会加载控件.

该答案中还有其他链接,可能有助于IE托管控件的信息,但这听起来像您已经通过它们.

控件可能无法加载的另一个原因取决于您使用的是哪个版本的IE. IE8需要控制来自内部网或受信任的区域.我不知道IE9是否改变了.但值得注意的是,“localhost”不在Intranet区域中,默认情况下不在信任区域中.这通常会让人们在网络服务器上测试客户端UI.

猜你在找的asp.Net相关文章