Web アプリケーションのように内部ユーザーのブラウザー (IE8) に表示したい従来の Windows フォーム アプリケーションがあります。私が検討しているアプローチは、Windows フォーム ライブラリ (dll) を作成し、それをブラウザーに表示することです。これを行う方法を教えてくれる多くのWebページがあります。
- http://msdn.microsoft.com/en-us/library/a7as3z1d(v=vs.90).aspx
- http://forums.asp.net/t/1598007.aspx/1
- http://windowsclient.net/articles/iesourcing.aspx
- http://www.4guysfromrolla.com/articles/052604-1.aspx
- http://www.codeguru.com/csharp/.net/net_general/internet/article.php/c19639/Hosting-NET-Windows-Forms-Controls-in-IE.htm
- http://weblogs.asp.net/spano/archive/2007/09/19/hosting-a-windows-form-control-in-a-web-page.aspx
- http://codebetter.com/petervanooijen/2007/06/18/included-a-winforms-user-control-in-an-asp-net-web-page/
しかし、私はそれを機能させることができません。簡単な Windows コントロール ライブラリを作成し、DLL をビルドしました。これを IIS 7.5 サイトのトップ レベル ディレクトリに、次のような html ファイルと共に配置します。
<html>
<body>
<object id='c' classid='http:TestWinCtrlLib.dll#TestWinCtrlLib.UserControl1' height='300' width='400'>
</object>
</body>
</html>
私のブラウザには、左上に小さな「画像」アイコンが付いた 300x400 のボックスが表示されます。最初、IIS は .dll ファイルの提供を拒否し、403.2 および 401.2 エラーが発生しましたが、今では IIS パーミッション プロパティを正しく設定しました。ログは、ファイルが正常に提供されていることを示しています。
2012-05-01 01:28:50 ::1 GET /form.html - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 1
2012-05-01 01:28:50 ::1 GET /TestWinCtrlLib.dll - 8008 - ::1 Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+WOW64;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+.NET4.0C;+.NET4.0E) 200 0 0 23
何が問題なのかさえわかりません。上記の最初のリンクにはエラー報告に関するセクションがあり、これらのキーをレジストリに追加しましたが、エラーは表示されません。エラーが標準出力に表示される可能性がある場合に備えて、cmdプロンプトからiexploreを起動しようとしましたが、何もありませんでした。
エラー報告
コード ダウンロード プロセスでは、次の 2 つのレジストリ設定を使用して、Internet Explorer を使用して展開されたマネージ コード実行可能ファイルからのエラー レポートを制御します。
- HKLM\Software\Microsoft.NETFramework\ExposeExceptionsInCOM
- HKCU\Software\Microsoft.NETFramework\ExposeExceptionsInCOM
...
Internet Explorer を使用して展開するマネージ コードをデバッグする場合、これらの設定の値を使用して、コード ダウンロードの失敗に関する詳細情報を見つけることができます。たとえば、これにより、開発者ではなくエンドユーザー向けに設計された Internet Explorer が提供するエラー報告に頼る代わりに、例外がスローされたときにスタック トレース情報を表示できます。
この機能がサポートされなくなった可能性はありますか? 私が見つけた参考文献のほとんどは、2007 年から 2010 年のもののようです。おそらく、 ClickOnceがこれを行う唯一の方法です。それを機能させることはできますが、コードはブラウザー内ではなく、独自のウィンドウで実行されます。
.Net フレームワーク 3.5 Client Profile と 4.0 Client Profile を使用してライブラリをコンパイルしようとしました。しかし、彼らは同じ結果を与えるようです。
どんな助けでも大歓迎です - ありがとう。