私は、Webアプリケーションのようにインサイダーユーザのブラウザ(IE8)を表示したいと考えている従来のWindowsフォームアプリケーションを持っています。私が見てきたアプローチは、Windowsフォームライブラリ(dll)を作成し、それをブラウザに表示することです。これを行う方法を教えて多くのWebページがあります。IE8内にWindowsユーザコントロールを表示することができます
- 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/including-a-winforms-user-control-in-an-asp-net-web-page/
しかし、私はそれを動作させることはできません。私は簡単なウィンドウコントロールライブラリを作ってDLLを作りました。
<html>
<body>
<object id='c' classid='http:TestWinCtrlLib.dll#TestWinCtrlLib.UserControl1' height='300' width='400'>
</object>
</body>
</html>
私のブラウザは左上にある小さな「絵」アイコンと300x400ボックスを示しています。私はこのようなHTMLファイルと一緒にIIS 7.5サイトのトップレベルのディレクトリにいることを置きます。 最初に、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を起動しようとしましたが、何も表示されませんでした。
エラー報告
コードのダウンロードプロセスは、Internet Explorerを使用して を展開しているマネージコードの実行ファイルから 制御エラー報告に次の2つのレジストリ設定を使用します。
- HKLM \ SOFTWARE \ Microsoft.NETFramework \ ExposeExceptionsInCOM
- HKCU \ SOFTWARE \ Microsoft.NETFramework \ ExposeExceptionsInCOM
...
あなたは、インターネットを使用してデプロイマネージコードをデバッグするときエクスプローラで、これらの設定の値を使用して、コードダウンロードの失敗に関する詳細情報を検索できます。たとえば、開発者ではなくエンドユーザー向けに設計されたInternet Explorerが提供するエラー報告に頼るのではなく、例外がスローされたときにスタックトレース情報を表示することができます。
この機能はサポートされなくなる可能性がありますか?私が見つけた参考文献のほとんどは2007〜2010年のようです。おそらくClickOnceがこれを行う唯一の方法です。私はそれを働かせることができますが、コードはブラウザ内ではなく、独自のウィンドウで実行されます。
.NET Framework 3.5クライアントプロファイルと4.0クライアントプロファイルを使用してライブラリをコンパイルしようとしました。しかし、彼らは同じ結果を与えるようです。
ご協力ありがとうございます - ありがとうございます。
あなたはリサイズに固執する場合はClickOnce配置に切り替える必要があり、それはリサイズ(および他のタイプの)クライアントアプリケーションを展開する方法です、外/なしIE。それ以外の場合は、IE内で実行されるSilverlightに移行できます。ごくまれに言及されているものが見つかった場合、明らかに、IE内でWinFormsアプリを実行するような、あなたが固執するべきものではありません。 –
ありがとう、Lex。私は正常にWinFormsアプリケーションのClickOnceを使用しています。マイクロソフトから、ブラウザ内でフォームライブラリ(アプリケーションではない)を動かすという権威ある声明を見つけることができれば役に立ちます。これを行うためのよりよい方法があると私は同意しますが、この場合、私のものではありません選択 :-)。 – John
マイクロソフトは、(オープンソースの世界のように)彼らから何かが死んでいると発表するのは良くありません。ごくまれに言及されている技術者の場合、おそらくhttp://support.microsoft.comを通じてマイクロソフトのサポートに連絡することができます。ここで、より多くのデバッグを行い、根本的な原因と回避方法を教えてください。それは時間がかかり、解像度も保証されません。 –