Pergunta

Estou tentando acessar uma página dentro de um HttpModule e eu acho que eu deveria fazer isso chamando HttpContext.Current.Handler (Isto deve fazer referência a página atual), mas eu estou ficando nulo todo o tempo.

Estou desenvolvendo utilizando .Net 3.5 Framework.

Estou verificando isso em AuthorizeRequest e AuthenticateRequest

Graças.

Foi útil?

Solução

Provavelmente, o pedido não foi entregue a um manipulador ainda (por exemplo, você está em BeginRequest).

Outras dicas

Em AuthorizeRequest e AuthenticateRequest, o manipulador ainda não foi criado. (Um manipulador não deve ser criado se o pedido for negado) Portanto, esta propriedade é null.

Por que você o Page, eo que você está tentando fazer?

Você poderia tentar lidar com PostMapRequestHandler, que ocorre depois que resolve o Page, e jogando um HttpException ou chamando Response.End se você decidir negar o pedido.

No entanto, note que, para obter uma instância do manipulador, seu construtor deve executar; certifique-se que não faz nada crítico ou sensível.

Eu tenho problemas semelhantes e solução finalmente encontrada. meu problema foi devolvido NULL, em seguida, usar esse código em classe externa. Peço desculpas por meu Inglês não é bom.

solução via código: (testei)
Testado 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() { }
}

}

De que forma você está acessando esta propriedade?

Em IHttpModule.Init, será null. Você precisa registrar manipuladores de eventos no application recebido como um parâmetro para o método Init e fazer o seu trabalho lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top