Почему HttpContext.Current.Обработчик равен null?
-
20-08-2019 - |
Вопрос
Я пытаюсь получить доступ к Странице в HttpModule, и я думаю, что мне следует сделать это, вызвав HttpContext.Current.Обработчик (он должен ссылаться на текущую страницу), но я все время получаю null.
Я разрабатываю с использованием .Net 3.5 framework.
Я проверяю это с помощью AuthorizeRequest и AuthenticateRequest
Спасибо.
Решение
Вероятно, запрос еще не был передан обработчику (например, вы находитесь в BeginRequest
).
Другие советы
В AuthorizeRequest
и AuthenticateRequest
, обработчик еще не был создан.(Обработчик не должен создаваться, если запрос отклонен) Следовательно, это свойство равно null.
Почему вы Page
, и что ты пытаешься сделать?
Вы могли бы попробовать справиться PostMapRequestHandler
, который возникает после того , как он разрешает Page
, и бросая HttpException
или зовущий Response.End
если вы решите отклонить запрос.
Однако, пожалуйста, обратите внимание, что для получения экземпляра обработчика его конструктор должен быть запущен;убедитесь, что он не делает ничего критичного или чувствительного.
У меня похожие проблемы , и я , наконец, нашел решение .моей проблеме было возвращено значение null , затем используйте этот код для внешнего класса.Я приношу извинения за то , что мой английский не очень хорош .
решение с помощью кода: (Протестировали)
Проверено с помощью:По СРАВНЕНИЮ С 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() { }
}
}
Каким способом вы получаете доступ к этому свойству?
В IHttpModule.Init
, это будет null
.Вам необходимо зарегистрировать обработчики событий на application
полученный в качестве параметра для Init
метод и выполняйте там свою работу.