Frage

Ich versuche, eine Seite in einem Httpmodule zugreifen und ich glaube, ich dies telefonisch tun sollte HttpContext.Current.Handler (Dies sollte die aktuelle Seite verweisen), aber ich bin immer null ganze Zeit.

Ich entwickle .NET 3.5 Framework.

Ich überprüfe dies auf AuthorizeRequest und AuthenticateRequest

Danke.

War es hilfreich?

Lösung

Wahrscheinlich hat die Anfrage bisher noch nicht zu einem Handler übergeben (zum Beispiel sind Sie in BeginRequest).

Andere Tipps

In AuthorizeRequest und AuthenticateRequest hat die Prozedur noch nicht erstellt worden. (A-Handler sollte nicht erstellt werden, wenn der Antrag abgelehnt wird) Daher ist diese Eigenschaft null ist.

Warum Sie den Page tun, und was wollen Sie tun?

Sie könnten versuchen, PostMapRequestHandler Handhabung, die nach kommt es den Page löst, und ein HttpException werfen oder rufen Response.End, wenn Sie den Antrag entscheiden zu verweigern.

Beachten Sie jedoch beachten, dass eine Instanz der Handler zu erhalten, muß der Konstruktor laufen; stellen Sie sicher, es ist nicht alles tun, kritisch oder empfindlich ist.

Ich habe ähnliche Probleme und schließlich gefunden Lösung. Mein Problem ist null dann zurückgegeben diesen Code auf externe Klasse. Ich entschuldige mich für mein Englisch nicht gut ist.

Lösung über Code: (getestet haben)
Geprüft: 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() { }
}

}

In welcher Methode Sie diese Eigenschaft zugreifen?

In IHttpModule.Init, wird es null werden. Sie müssen es als Parameter an die application Methode empfangen und tun Sie Ihre Arbeit Event-Handler auf dem Init registrieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top