8

HttpModule内のページにアクセスしようとしていますが、HttpContext.Current.Handler(これは現在のページを参照する必要があります)を呼び出すことでこれを行う必要があると思いますが、常にnullが発生します。

.Net3.5フレームワークを使用して開発しています。

AuthorizeRequestとAuthenticateRequestでこれをチェックしています

ありがとう。

4

4 に答える 4

11

おそらく、リクエストはまだハンドラーに渡されていません(たとえば、あなたはにいますBeginRequest)。

于 2009-06-28T03:02:24.320 に答える
5

AuthorizeRequestおよびで、ハンドラーはAuthenticateRequestまだ作成されていません。(要求が拒否された場合はハンドラーを作成しないでください)したがって、このプロパティはnullです。

なぜあなたはPage、そしてあなたは何をしようとしているのですか?

PostMapRequestHandlerを解決した後に発生する処理を試して、要求を拒否することにした場合は、または呼び出しPageをスローすることができます。HttpExceptionResponse.End

ただし、ハンドラーのインスタンスを取得するには、そのコンストラクターを実行する必要があることに注意してください。重要なことや敏感なことを何もしないことを確認してください。

于 2009-06-28T03:18:26.703 に答える
2

私は同様の問題を抱えており、最終的に解決策を見つけました。私の問題はnullが返され、外部クラスでこのコードを使用します。英語が上手くいかないことをお詫びします。

コードによるソリューション:(テスト済み)
テスト対象:VS 2010

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;

//[Description of MyNamespace]
//|================================================================================>
//|-----*(In The Name Of GOD)*-----
//|================================================================================>

namespace MyNamespace
{
//Most Be "partial class" And ": System.Web.UI.Page" !!!!
public partial class MyClass : System.Web.UI.Page
{
    //|============================================================>
    //| Value Of Class.
    //|============================================================>

    static System.Web.UI.Page Page1 = null;
    static System.Web.UI.Page Page2 = null;

    int form1Index = -0;


    //Most Be Static Method!!!!
    public static void GetMyPage()
    {
        //Both are a result code.
        //هر دو کد یه نتیجه می دهد
        Page1 = HttpContext.Current.Handler as System.Web.UI.Page;
        Page2 = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;

    }


    //|============================================================>
    //| DO() Methods Of MyClass Class.
    //|============================================================>
    public void DO()
    {
        //Call Your Static Method => GetMyPage()
        GetMyPage();

        if (Page1 != null)
        {
            for (int i = 0; i < Page1.Controls.Count; i++)
            {
                if (Page1.Controls[i].ID == "form1")
                {
                    form1Index = i;
                    break;
                }
            }
        }

        if (form1Index != -0)
        {
            for (int j = 0; j < Page1.Controls[form1Index].Controls.Count; j++)
            {
                string ControlsID = Page1.Controls[form1Index].Controls[j].ID;
                // Code location ...
                //محل قرار گیری کد ها...
            }

        }
    }



    //|============================================================>
    //| Destructor Methods MyClass Class.
    //|============================================================>
    ~MyClass() { }
}

}

于 2013-08-01T00:35:01.537 に答える
0

このプロパティにアクセスする方法は何ですか?

IHttpModule.Init、になりますnull。受信したイベントハンドラーをメソッドapplicationのパラメーターとして登録し、そこで作業を行う必要があります。Init

于 2009-06-28T03:03:28.920 に答える