14

クリーンなボックスでのレガシー アプリのホスティングを反映するという私の進行中の物語で、私は次の障害にぶつかりました。1 つのページは、大きな .NET UserControl に依存しており、新しいマシンではグレー表示された大きなテキスト領域としてのみレンダリングされます (右端の垂直スクロールバーがグレー表示されます。ソースを調べると、予想される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 と Aspose DLL を含む DLL のランドリー リストが表示されます。
4

2 に答える 2

1

これは、実際には、まったく別の質問である .NET での ActiveX コントロールの作成と展開に対する回答から取られています。

...

コントロールをロードしたら、デバッグ用にコンパイルし、「マネージ」デバッグ用に IE にアタッチすると、コントロールを簡単にデバッグできます。コントロールをロードできない場合は、フュージョン アセンブリ バインディング ビューアー ( http://msdn.microsoft.com/en-us/library/e74a18c4.aspx ) および IEHost トレースを有効にする方法 ( http: //support.microsoft.com/kb/313892ロード プロセスをデバッグするため。

アセンブリのすべてのバージョンを必ずバージョン管理してください。そうしないと、ダウンロード キャッシュ内のアセンブリが異なっていても、URL が参照するものと同じバージョン # を持つ場合、IE が混乱してコントロールをロードしません (gacutil /cdl は .net ダウンロード キャッシュをクリアします)。

...

その回答には、役立つかもしれないIEホストコントロールに関する情報への他のリンクがありますが、すでにそれらを経験しているようです。

コントロールが読み込まれない別の理由は、使用している IE のバージョンによって異なります。IE8 では、コントロールがイントラネットまたは信頼ゾーンから来る必要があります。これがIE9で変更されたかどうかはわかりません。ただし、「localhost」はイントラネット ゾーンにはなく、既定では信頼済みゾーンにも含まれていないことに注意してください。これは、Web サーバーでクライアント UI をテストしている人々をつまずかせることがよくあります。

于 2011-12-07T19:22:39.207 に答える
0

IE 6 にパッチを当てて、仮想的にクリーンな XP SP3 ボックスを構築します。IE 6 のすべてのセキュリティ設定をオフにして、レンダリングされるかどうかを確認します。それが機能する場合は、それが環境とコードに関連していることがわかります。

于 2011-11-03T03:15:45.070 に答える