1

現在、私の製品ページの URL は次のようになっています

http://www.localhost:80/products/default.aspx?code=productCode

で商品ページにアクセスしたい

http://www.localhost:80/productCode

これにはHTTPモジュールを使用しました。

public class UrlRewritingModule : IHttpModule

{

        public void Dispose()
        {

        }
        public void Init(HttpApplication context)
        {
            context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);

           context.AuthorizeRequest += new EventHandler(context_AuthorizeRequest);


        }  
        void context_AuthorizeRequest(object sender, EventArgs e)
        {
             HttpContext context = ((HttpApplication)sender).Context;
            if (some condition)
            {
               context.RewritePath(url);
             }
        }
        void context_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            //We set back the original url on browser
            HttpContext context = ((HttpApplication)sender).Context;

            if (context.Items["originalUrl"] != null)
            {
                context.RewritePath((string)context.Items["originalUrl"]);
            }
        }
}

web.config に登録しましたが、正常に動作しています。しかし、IIS にデプロイすると、そのセッション変数とアプリケーション変数は null 参照例外をスローしません。

誰でも私を助けることができますか?

編集: 書き換えられた URL のセッション/アプリケーション変数にアクセスするには、追加のコードが必要ですか?

4

2 に答える 2

0

HTTPContext.Currentを使用してみましたか?

于 2012-10-15T13:20:12.377 に答える
0

web.config のモジュールにrunAllManagedModulesForAllRequests="true"属性を追加することで、問題 (カスタム ハンドラーによって書き換えられた後続のページでセッション変数とアプリケーション変数にアクセスする) を解決できました。

于 2012-10-17T12:13:06.030 に答える