在我正在进行的将遗留应用程序托管在一个干净的盒子上的传奇中,我遇到了下一个障碍。一页依赖于一个大的 .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。