programing

현재 시스템을 가져옵니다.HttpContext의 Web.UI.Page?

powerit 2023. 6. 7. 23:20
반응형

현재 시스템을 가져옵니다.HttpContext의 Web.UI.Page?

이것은 사실 두 부분으로 구성된 질문입니다.먼저 HttpContext를 수행합니다.전류는 현재 시스템에 해당합니다.UI.페이지 개체?

그리고 첫 번째와 관련된 두 번째 질문은 현재 페이지가 인터페이스를 구현하는지 확인하는 데 다음을 사용할 수 없는 이유입니다.

private IWebBase FindWebBase()
{
    if (HttpContext.Current as IWebBase != null)
    {
        return (IWebBase)HttpContext.Current.;
    }
    throw new NotImplementedException("Crawling for IWebBase not implemented yet");
}

일반적으로 일부 컨트롤은 SharePoint 웹 파트로 실행되는지 아니면 As의 일부로 실행되는지 알아야 합니다.넷 프레임워크.

컨트롤 자체에 대한 참조를 전달하도록 하고 컨트롤의 Page 속성을 확인하여 문제를 해결했지만, 여전히 위의 내용이 작동하지 않는 이유가 궁금합니다.

컴파일러 오류: 시스템을 변환할 수 없습니다.Web.HttpContext 대상...참조 변환, 복싱 변환, 언박스 변환, 래핑 변환 또는 널 형식 변환을 통한 IWebBase.

아니요, HttpContext의 MSDN에서 왔습니다.Current: "현재 HTTP 요청에 대한 HttpContext 개체를 가져오거나 설정합니다."

즉, 페이지가 아닌 HttpContext 개체입니다.

다음을 사용하여 HttpContext를 통해 Page 개체에 액세스할 수 있습니다.

Page page = HttpContext.Current.Handler as Page;

if (page != null)
{
     // Use page instance.
}

찾으시는 제품HttpContext.Handler페이지에서 IHTTPHandler를 구현하므로 현재 실행 중인 페이지에 대한 참조를 얻을 수 있습니다.당신은 그것을 캐스팅하거나 적어도 당신이 찾고 있는 특정 유형에 캐스팅을 시도해야 할 것입니다.

HttpContext.CurrentHttpContext의 싱글톤 인스턴스만 반환합니다.따라서 페이지가 아니며 페이지가 될 수도 없습니다.

사용할 수 있습니다.HttpContext.Current.CurrentHandler현재 실행 중인 정확한 페이지를 원하는 경우.예를 들어 Default.aspx에 대한 요청이 전송되지만 오류가 발생하면Response.Transfer사용자 지정 ErrorHandler.aspx 페이지로 이동합니다. CurrentHandlerErrorHandler.aspx의 인스턴스를 반환합니다(오류 뒤에 호출되는 경우).HttpContext.Current.HandlerDefault.aspx 인스턴스를 반환합니다.

제 답변을 참조하십시오.
HttpContext가 필요한 이유.현재의.처리기가 null입니까?

당신 문제를 해결했을 수도 있습니다.

언급URL : https://stackoverflow.com/questions/58123/get-current-system-web-ui-page-from-httpcontext

반응형