Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get current System.Web.UI.Page from HttpContext?

This is actually a two part question. First,does the HttpContext.Current correspond to the current System.UI.Page object?

And the second question, which is probably related to the first, is why can't I use the following to see if the current page implements an interface:

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

The general context is that some controls need to know whether they are executing as a SharePoint webpart, or as part of an Asp.Net framework.

I have solved the problem by requiring the control to pass a reference to itself, and checking the Page property of the control, but I'm still curious why the above does not work.

The compiler error is: Cannot convert System.Web.HttpContext to ...IWebBase via a reference conversion, boxing conversion, unboxing conversion, wrapping conversion or null type conversion.

like image 470
tsimon Avatar asked Sep 12 '08 01:09

tsimon


People also ask

How do I find HttpContext current?

If you're writing custom middleware for the ASP.NET Core pipeline, the current request's HttpContext is passed into your Invoke method automatically: public Task Invoke(HttpContext context) { // Do something with the current HTTP context... }

What is Webui page?

System. Web. UI represents an . aspx file, also known as a Web Forms page, requested from a server that hosts an ASP.NET Web application. The Page class is associated with files that have an .

What is HttpContext current in C#?

The property stores the HttpContext instance that applies to the current request. The properties of this instance are the non-static properties of the HttpContext class. You can also use the Page. Context property to access the HttpContext object for the current HTTP request.

What is the use of HttpContext current?

HttpContext is an object that wraps all http related information into one place. HttpContext. Current is a context that has been created during the active request. Here is the list of some data that you can obtain from it.


2 Answers

No, from MSDN on HttpContext.Current: "Gets or sets the HttpContext object for the current HTTP request."

In other words it is an HttpContext object, not a Page.

You can get to the Page object via HttpContext using:

Page page = HttpContext.Current.Handler as Page;  if (page != null) {      // Use page instance. } 
like image 116
Ash Avatar answered Sep 20 '22 19:09

Ash


You're looking for HttpContext.Handler. Since Page implements IHttpHandler, you'll obtain a reference to the currently executing page.You'll have to cast it, or at least try to cast it to the particular type you're looking for.

HttpContext.Current simply returns the singleton instance of HttpContext. Therefore, it is not and can never be, a page.

like image 20
Kilhoffer Avatar answered Sep 18 '22 19:09

Kilhoffer