Подтвердить что ты не робот

HttpContext.Current не разрешается в проекте MVC 4

Я хочу использовать ImageResizer (из ImageResizing dot net). Я установил ImageResizer для MVC через NuGet. Но когда я использую следующий код из примера:

//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();
        }

"HttpContext.Current.Request.Files.Keys" в foreach не разрешает? У меня правильные настройки, и Visual Studio не предлагает никаких параметров "Разрешить".

4b9b3361

Ответ 1

Проблема заключается в том, что класс Controller имеет общедоступное свойство HttpContext (см. http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.httpcontext.aspx).

Это означает, что когда вы пытаетесь использовать его без какой-либо квалификации в контроллере, он разрешает локальное свойство, а не System.Web.HttpContext. Тип свойства HttpContextBase, который имеет свойство Request, которое будет делать то, что вы хотите (хотя обратите внимание, что это не тот класс, который вы бы получили из System.Web.HttpContext.

Ответ 2

Попробуйте установить его с помощью System.Web.

Если я попробую System.Web.HttpContext.Current, то есть Current, но если я попробую HttpContext.Current, тогда он не распознает "Current". У меня есть System.Web в моих операциях using, но мне все еще кажется, что требуется указать его, чтобы получить доступ к "Current".

Ответ 3

Очень простая библиотека добавления

using System.Web;

и замените

context.Response -> HttpContext.Current.Response

означает

context -> HttpContext.Current

и ваша проблема решена.