Question

J'essaie d'accéder à une page dans un HttpModule et je pense que je devrais le faire en appelant HttpContext.Current.Handler (cela devrait faire référence à la page en cours), mais j'obtiens tout le temps une valeur nulle.

Je développe à l'aide du framework .Net 3.5.

Je vérifie ceci sur AuthorizeRequest et AuthenticateRequest

Merci.

Était-ce utile?

La solution

Probablement, la demande n'a pas encore été transmise à un gestionnaire (par exemple, vous êtes dans BeginRequest).

Autres conseils

Dans AuthorizeRequest et AuthenticateRequest, le gestionnaire n'a pas encore été créé. (Un gestionnaire ne doit pas être créé si la demande est refusée.) Par conséquent, cette propriété est null.

Pourquoi faites-vous la Page et qu'essayez-vous de faire?

Vous pouvez essayer de gérer PostMapRequestHandler, ce qui se produit après la résolution du problème HttpException, et d'envoyer un Response.End ou d'appeler <=> si vous décidez de refuser la demande.

Cependant, veuillez noter que pour obtenir une instance du gestionnaire, son constructeur doit être exécuté; assurez-vous qu'il ne fait rien de critique ou de sensible.

J'ai des problèmes similaires et j'ai finalement trouvé une solution. mon problème a été retourné null puis utilisez ce code sur une classe externe. Je m'excuse pour mon anglais n'est pas bon.

solution via le code: (avoir testé)
Testé par: 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() { }
}

}

Par quelle méthode accédez-vous à cette propriété?

Dans IHttpModule.Init, ce sera null. Vous devez enregistrer les gestionnaires d'événements sur le application reçu en tant que paramètre de la méthode Init et y effectuer votre travail.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top