Can't access to HttpContext.Current [duplicate]
Asked Answered
M

3

73

I can't access to HttpContext.Current on my project MVC4 with C#4.5

I've added my reference to System.Web in my project and added the using instruction on my controller page...

But I can access currentHandler only...

var context = HttpContext.CurrentHandler; //Current

Is HttpContext.Current deprecated on C#4.5 ?

I've looked this help page : http://msdn.microsoft.com/en-us/library/system.web.httpcontext.aspx

Metagenesis answered 19/8, 2013 at 8:16 Comment(2)
you added reference to your project, but have you got a using System.Web on top of your file ?Brunelleschi
if anyone find you can't use HttpContext.Current.Request or Request.ApplicationPath, try System.Web.HttpContext.Current.Request.ApplicationPath;Dyslexia
T
149

Have you included the System.Web assembly in the application?

using System.Web;

If not, try specifying the System.Web namespace, for example:

 System.Web.HttpContext.Current
Tula answered 19/8, 2013 at 8:19 Comment(3)
funny but it only worked for me after adding the full System.Web.HttpContext.Current didn't pick up the using, i wonder whyScruggs
@CMS, I think it may have something to do with Extensions.Generalization
@Scruggs It's pretty old but I think it's because there's some using in the Controller that already implements HttpContextBaum
L
39

This is because you are referring to property of controller named HttpContext. To access the current context use full class name:

System.Web.HttpContext.Current

However this is highly not recommended to access context like this in ASP.NET MVC, so yes, you can think of System.Web.HttpContext.Current as being deprecated inside ASP.NET MVC. The correct way to access current context is

this.ControllerContext.HttpContext

or if you are inside a Controller, just use member

this.HttpContext
Loosing answered 19/8, 2013 at 8:21 Comment(1)
Thanks for explain, but i can't access Current, just CurrentHanlder ... so don't resolve my problem...Metagenesis
R
8

Adding a bit to mitigate the confusion here. Even though Darren Davies' (accepted) answer is more straight forward, I think Andrei's answer is a better approach for MVC applications.

The answer from Andrei means that you can use HttpContext just as you would use System.Web.HttpContext.Current. For example, if you want to do this:

System.Web.HttpContext.Current.User.Identity.Name

you should instead do this:

HttpContext.User.Identity.Name

Both achieve the same result, but (again) in terms of MVC, the latter is more recommended.

Another good and also straight forward information regarding this matter can be found here: Difference between HttpContext.Current and Controller.Context in MVC ASP.NET.

Rung answered 9/6, 2016 at 0:0 Comment(1)
That really does clarify Andrei's answer. Thanks for this.Envisage

© 2022 - 2024 — McMap. All rights reserved.