0

主に SharePoint に基づいて最近リリースした Web サイトがあります。一部のサイトでは、単純な XML だけを返す必要がありました。プロジェクトのコンサルタントは、page_load メソッドで応答オブジェクトを書き込む .aspx ページとして xml 戻り値を実装しました。

これについて少し調べてみたところ、これはおそらく間違った方法であることがわかりました。これは、必要のない ASPX ページのすべての余分なイベントを呼び出すからです。

これが私の質問です。これらの関数を httphandler との .ashx リンクとして再作成したいと考えています。ただし、.aspx で終わる元のリンクと、それらに付随する get パラメーターを保持して、返す XML の種類を決定できるようにしたいと考えています。

.aspx 終了リンクを .ashx リンクに書き換え/リダイレクトすることが可能です。それとも、IIS サーバーがすべての .aspx を正しく解釈しない原因になりますか?

4

1 に答える 1

0

多分運がいいと思います…

同様のことをしました。当社の e コマース Web アプリは、製品の画像として JPG、PNG、および GIF ファイルのみを受け入れますが、すべての製品に対してすべての画像を動的に作成したいと考えていました。

そのため、JPG、PNG、および GIF ファイルを再マップしてハンドラーにしました。

ただし、すべての JPG、PNG、および GIF ファイルをマップすることは望ましくありません。これは、静的ファイルには非常に非効率的であるため、特定のファイルのみをマップするようにしました。

方法は次のとおりです。

すべての ASPX ファイルが、他のファイルが共有していない同様のファイル仕様に従っている場合は、これを のweb.config下に追加してください<httpHandlers>

<add path="filespec*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>

すべてがファイル仕様を共有していない場合は、それらを 1 つずつ web.config に追加する必要があります。

<add path="oldaspx1.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx2*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>
<add path="oldaspx3*.aspx" verb="*" type="MyAssembly.MyHandlerName, MyAssembly"/>

IIS7 統合パイプラインで実行しているかどうかに関係なく、これを使用できるようにするには、<handlers>要素に同様の行を追加することもできます

次に、'oldaspx1.aspx' に対する要求が届くと、カスタム ハンドラーによって (ページ ライフサイクルが開始されることなく、非常に効率的に) 処理されます。

これで問題が解決した場合は、左側にチェックマークを付けて、受け入れられた回答としてマークしてください。

于 2011-01-17T03:27:59.257 に答える