Por Qué HttpContext.Actual.Controlador es null?
-
20-08-2019 - |
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.
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.