HttpContext.Current not Resolving in MVC 4 Project
Solution 1
The problem is that the Controller
class has a public property called HttpContext
(see http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspx).
This means that when you attempt to use it without any qualification in the controller it resolves to the local property and not System.Web.HttpContext
. The type of the property is HttpContextBase
which does have a Request
property that would do what you want (though note that it isn't the same class as you would get from System.Web.HttpContext
.
Solution 2
Try prefixing it with System.Web.
If I try System.Web.HttpContext.Current
, then Current is there, but if I try HttpContext.Current
, then it doesn't recognize 'Current'. I do have System.Web
in my using statements, but I still seem to be required to specify it in order to get access to 'Current'.
@Chris' answer points and explains the underlying reason.
Solution 3
Very simple add library
using System.Web;
and replace
context.Response -> HttpContext.Current.Response
means
context -> HttpContext.Current
and your problem is solved.
Nick
Updated on December 03, 2021Comments
-
Nick over 2 years
I am wanting to use ImageResizer (from ImageResizing dot net). I installed ImageResizer for MVC via NuGet. But when I go to use the following code from the example:
//Loop through each uploaded file foreach (string fileKey in HttpContext.Current.Request.Files.Keys) { HttpPostedFile file = HttpContext.Current.Request.Files[fileKey]; if (file.ContentLength <= 0) continue; //Skip unused file controls. //The resizing settings can specify any of 30 commands.. See http://imageresizing.net for details. //Destination paths can have variables like <guid> and <ext>, or //even a santizied version of the original filename, like <filename:A-Za-z0-9> ImageResizer.ImageJob i = new ImageResizer.ImageJob(file, "~/uploads/<guid>.<ext>", new ImageResizer.ResizeSettings( "width=2000;height=2000;format=jpg;mode=max")); i.CreateParentDirectory = true; //Auto-create the uploads directory. i.Build(); }
The "HttpContext.Current.Request.Files.Keys" in the foreach is not resolving? I have my usings correct and Visual Studio offers no "Resolve" options.
-
Niraj almost 9 years@Chris has answered it why you have to prefix HttpContext with System.Web, even if you have included System.Web in your using statements. because controller already has a HttpContext property and if you use without System.Web, it refers to its local property which does not have current.
-
Frank Navarrete about 2 yearsEven though this is a (very) old answer, I'd like to add that you can still access the HttpContext from HttpContextBase by doing
HttpContext.ApplicationInstance.Context