문제

나는 httpmodule 내에서 페이지에 액세스하려고 노력하고 있으며 httpcontext.current.handler (현재 페이지를 참조해야 함)를 호출 하여이 작업을 수행해야한다고 생각합니다.

.NET 3.5 프레임 워크를 사용하여 개발 중입니다.

Autherizerequest 및 AuthenticateRequest에서 이것을 확인하고 있습니다

감사.

도움이 되었습니까?

해결책

아마도 요청은 아직 핸들러에게 전달되지 않았을 것입니다 (예 : 당신은 BeginRequest).

다른 팁

~ 안에 AuthorizeRequest 그리고 AuthenticateRequest, 핸들러는 아직 생성되지 않았습니다. (요청이 거부 된 경우 핸들러를 작성해서는 안됩니다) 따라서이 속성은 NULL입니다.

왜 당신은 Page, 그리고 당신은 무엇을하려고합니까?

당신은 취급을 시도 할 수 있습니다 PostMapRequestHandler, 이는 해결 후 발생합니다 Page, 그리고 던지기 HttpException 또는 전화 Response.End 요청을 거부하기로 결정한 경우.

그러나 핸들러의 인스턴스를 얻으려면 생성자가 실행해야합니다. 비판적이거나 민감한 일을하지 않도록하십시오.

비슷한 문제가 있고 마침내 해결책을 찾았습니다. 내 문제는 NULL로 반환 한 다음이 코드를 외부 클래스에서 사용했습니다. 내 영어에 대해 사과드립니다.

코드를 통한 해결책 : (테스트)
테스트 : 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() { }
}

}

이 속성에 어떤 방법으로 액세스하고 있습니까?

~ 안에 IHttpModule.Init, 그것은 될 것입니다 null. 이벤트 처리기를 등록해야합니다 application 매개 변수로 수신되었습니다 Init 방법과 그곳에서 일하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top