ASP.NETルーティング-カスタムルートはGlobal.asaxのすべてを完全にスキップしますか?

StackOverflow https://stackoverflow.com/questions/400236

  •  03-07-2019
  •  | 
  •  

質問

単純なASP.NET 3.5 SP1 Webフォームアプリがあります... System.Web.Routing DLLを追加し、標準のASP.NETページを"として返す単純なルートを作成しました。 IHttpHandler"。

すべてが良い... HttpContext.Current.Userが null ???

であることを除いて

それで、もう少し掘り下げました(Global.asaxファイルのすべてのイベントにブレークポイントを配置しました)。通常、これらのブレークポイントはヒットします(標準の" .aspx"ページに移動すると):

  • Application_BeginRequest
  • Application_AuthenticateRequest
  • Application_EndRequest

しかし、ASP.NETルーティングを使用している場合...これらのイベントはどれも発生していません。何か不足していますか?

役に立ちましたか?

解決

IIS6を使用していると仮定すると、代わりに「ワイルドカード」を定義することができます。拡張ハンドラー。この単純な「すべてをキャッチ」を追加すると、 IIS6にマッピングすると、拡張機能のないリクエストを処理できるようになります。デフォルトでは、.NETインストーラーは" .aspx"をマップします。 aspnet_isapi.dllに-それが.aspx拡張子が機能する理由です。 APS.NETエンジンに拡張子のないリクエストをマップするには、IISにすべてのリクエストを調べるように指示する必要があります。

プロセスを説明する簡単な記事を次に示します。

http:// haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

「ラメ」を助け、減らす希望URLの要因。 :)

-Todd

他のヒント

気紛れで奇怪な(そして愚かな)答えを見つけた:)

" .aspx"を追加しない場合ルートの最後まで、Global.asaxで何も起動しません。つまり、BeginRequest、AuthenticateRequest、EndRequestなどを取得しません。また、SessionStateなども取得しません。

したがって、「修正」これからルートを変更するだけでした:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}", new MyHandler());

これ:

RouteTable.Routes.Add("Blah", new Route("Blah/{reportName}.aspx", new MyHandler());

どのように完全にラメ:) ...しかし、それはそれでもなお修正です!

言うとき

"" .aspx"を追加しない場合ルートの最後まで、Global.asaxで何も起動しません。つまり、BeginRequest、AuthenticateRequest、EndRequestなどを取得しません。また、SessionStateなども取得しません。

IISは、そのようなリクエストをログファイルに記録しますか、それとも単に匿名ですか?アプリケーション変数とViewStateはどうですか?

申し訳ありませんが、まだテストしていませんが、既に知っているかどうかを尋ねるだけですか?

iはアプリケーション変数とViewstateをチェックしましたが、これら2つは明らかに動作しています。サーバーログについてはわかりません:S

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top