Пример #4 обратной загрузки не работает в VS2010 MVC4
Код примера №4 обратной загрузки не работает.
public class FileUploadDerivedController : BackloadController
{
// Since version 1.9 you can call the asynchronous handler method
public async Task<ActionResult> FileHandler()
{
// Call base class method to handle the file upload asynchronously
ActionResult result = await base.HandleRequestAsync();
return result;
}
}
Я получаю эту ошибку:
'Backload.Controllers.BackloadController' does not contain a definition for 'HandleRequestAsync'
Воспроизвести:
- Используя VS2010, откройте новый проект MVC4.
- Чтобы включить асинхронную синхронизацию в VS2010, установите VS Async CTP: http://www.microsoft.com/en-us/download/details.aspx?id=9983
- В вашем проекте ссылка: [VS Async CTP Install]\Microsoft Visual Studio Async CTP\Samples\AsyncCtpLibrary.dll
Использование команды Package Manager
Install-Package Backload
- Скачать примеры с: https://github.com/blackcity/Backload
- Откройте Пример № 4 и скопируйте код из FileUploadController.cs для класса FileUploadDerivedController.
usings
using Backload.Controllers;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Backload;
using System.Threading.Tasks;
контроллер
// Change namespace to yours
namespace Backload.Examples.Example04.Controllers
{
// For all demos below open the file ~/Scripts/main.js and
// change the url of the ajax call for the fileupload plugin
// Demo 1: Derive from BackloadController and call the base class
public class FileUploadDerivedController : BackloadController
{
// Since version 1.9 you can call the asynchronous handler method
public async Task<ActionResult> FileHandler()
{
// Call base class method to handle the file upload asynchronously
ActionResult result = await base.HandleRequestAsync();
return result;
}
}
}
Ошибка должна появиться в этой строке
ActionResult result = await base.HandleRequestAsync();
1 ответ
Решение
Ошибка правильная.
VS2010 с Async CTP нестабилен и, конечно, не рекомендуется для производственного использования. Обратите внимание, что даже создать эту среду разработки нелегко, поскольку Async CTP блокируется рядом обновлений Windows.
Но даже если вы используете VS2012 (т.е. с Microsoft.Bcl.Async), это все равно не будет работать, потому что async
поведение не определено в ASP.NET 4.
Использовать async
в MVC вы должны использовать ASP.NET 4.5 (или выше), а это означает использование VS2012.