リソースを処理するハンドラを作成していますが、実装されたIHttpHandlerクラスが名前空間の下に記述されているときに問題が発生しています。Ashxハンドラのprocessrequest関数が呼び出されていません
のWeb.configシナリオに動作しないコード
を見つけてください:
<add name="ResourceHandler" type="PublicSite.Classes.Handlers.ResourceEndpoint, PublicSite" path="Resource.ashx" verb="*" />
プロパティ:PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=False
問題:コンストラクタがヒットして、のprocessRequestが呼び出されていません。クラスのオブジェクトを構築します。つまり、コンストラクタがヒットしますが、processrequestが呼び出される前に404で失敗します。
ワーキングシナリオ
のWeb.config:
<add name="ResourceHandler" type="ResourceEndpoint,PublicSite" path="Resource.ashx" verb="*" />
クラス:PublicSite.Classes.Handlers.ResourceEndpoint.IsReusable=True
コンストラクタはヒットとのprocessRequestが呼び出される前に、404で失敗している
。
ハンドラを要求する2度目は、直ちに構築オブジェクトを使用するので、construcotrは呼び出されず、ProcessRequestが直接呼び出されます。ところで、2番目の呼び出しでは、ハンドラが動作しています。
私は再利用可能なプロパティを必要としません。 問題を見つけるのに役立つ人がいますか?ありがとう。
実際の.ashxファイルを使用していますか、それをWeb設定に登録していますか? –
ハンドラがネームスペースに入っていても、ネームスペースなしのクラス名だけが設定ラインに必要な場合がありますか? –
どのバージョンのIISを使用していますか? 6以下ではの下にハンドラを登録する必要がありますが、7以上の場合はweb.configのセクションにあります –
sh1rts