Pregunta

Estoy intentando acceder a una Página dentro de un HttpModule y creo que debo hacerlo llamando a HttpContext.Actual.Controlador (Esta debe hacer referencia a la página actual), pero me estoy poniendo null todo el tiempo.

Estoy en vías de desarrollo a utilizar .Net 3.5 framework.

Estoy revisando este en AuthorizeRequest y AuthenticateRequest

Gracias.

¿Fue útil?

Solución

Probablemente, la solicitud aún no se ha entregado a un controlador (por ejemplo, está en BeginRequest).

Otros consejos

En AuthorizeRequest y AuthenticateRequest, el controlador no se ha creado todavía.(Un controlador no debe ser creado si la solicitud es rechazada) por lo Tanto, esta propiedad es null.

¿Por qué el Page, y qué estás tratando de hacer?

Usted podría tratar de manejo PostMapRequestHandler, que se produce después de que se resuelve la Page, y lanzando un HttpException o llamando a Response.End si usted decide negar la solicitud.

Sin embargo, por favor tenga en cuenta que para obtener una instancia del controlador, su constructor debe ejecutar;asegúrese de no hacer nada crítico o sensible.

Tengo problemas similares y finalmente encontré la solución. mi problema fue devuelto nulo y luego uso este código en una clase externa. Pido disculpas por mi inglés no es bueno.

solución vía código: (Probado)
Probado por: 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() { }
}

}

En qué método de acceder a esta propiedad?

En IHttpModule.Init, será null.Usted necesita registrar manejadores de eventos del application recibe como parámetro el Init método y hacer tu trabajo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top