2012-03-16 6 views
2

プライマリappdomainをアンロードせずに、さまざまなアセンブリで定義された新しいページをasp.net Webサイトで更新できるソリューションを探しています/ binへのxcopyは動作しません)。DLLの更新時に、セカンダリAppDomainからのHTTP要求の処理またはアプリケーションの再起動の回避

クロスappdomainの呼び出しが私にとってはっきりしているようですが、別のappdomainにあるSystem.Web.UI.PageをASP.NETリクエストを処理しているappdomainに「提供」することは可能でしょうか?

ビルドプロバイダ、仮想パスプロバイダ、およびappdomainを検索すると、セカンダリappdomainまたはカスタムビルドプロバイダの実装の労力と潜在的な不安定性に比べて、プライマリappdomainの再起動が無視できると考えられます。

あなたのアイデアをお寄せいただきありがとうございます。

+1

なぜアプリケーションを再起動せずにアセンブリを更新する必要がありますか? – svick

答えて

0

私はそれがと思われると思われますので、かなりと思われます。私は別のバージョンを動的にロードするOutlookアドインのAppDomainクロス呼び出しを使用して作業しましたが、それほど多かったわけではありません。私はASP.NETでそれをしていないので、あなたがそこに落ちるかもしれないトラップが分からない。

  1. は、Page_Loadイベントにブレークポイントをヒットし、スタックトレースを調べる:

    個人的に、私は2つの選択肢を模索します。 System.Web.dll - IExecutionStep.Execute()の呼び出しを参照してください。これは、WebアプリケーションのDLLに入りますか?さらにスタックに何かが登録されているか、そうでなければどのページクラスがリクエストを処理するかを決定します。トリック? (申し訳ありませんが、どこで、どのように、私は漠然とこのことについて何かを読んでリコール)標準的な動作を覆す。

  2. 明示的に要求を処理するモジュールを実装することで、Webパイプラインの多くを回避/バイパスします。

編集:オプション1を詳しく説明すると、PageHandlerFactoryクラスは私が考えていたクラスです。 http://msdn.microsoft.com/en-us/library/system.web.ui.pagehandlerfactory.aspxこの記事で特に関心を持つのは、コメント "です。カスタムページハンドラファクトリを構築し、IHttpHandlerFactoryを実装し、httpHandlers要素(ASP.NET設定スキーマ)構成のアプリケーションのWeb.configファイルにカスタムPageHandlerFactoryクラスを登録します "

つまり、独自のPageHandlerFactoryを実装する場合は、別のAppDomainに要求を渡すなど、必要に応じてページ要求を処理できるはずです。

関連する問題