Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом документе описывается выпуск бета-версии ASP.NET MVC 4 для Visual Studio 2010.
Примечание
Это не самый свежий выпуск. Заметки о выпуске версии-кандидата ASP.NET MVC 4 доступны здесь.
Новые функции в бета-версии ASP.NET MVC 4
- ASP.NET Web API
- одностраничное приложение ASP.NET
- Усовершенствования шаблонов проектов по умолчанию
- Шаблон мобильного проекта
- Режимы отображения
- jQuery Mobile, переключатель представлений и переопределение браузера
- Рецепты для создания кода в Visual Studio
- Поддержка задач для асинхронных контроллеров
- Пакет Azure SDK
- Известные проблемы и критические изменения
Замечания по установке
ASP.NET бета-версия MVC 4 для Visual Studio 2010 можно установить с домашней страницы ASP.NET MVC 4 с помощью установщика веб-платформы.
Перед установкой ASP.NET бета-версии MVC 4 необходимо удалить все ранее установленные предварительные версии ASP.NET MVC 4.
Этот выпуск несовместим с предварительной версией для разработчиков платформа .NET Framework 4.5. Перед установкой ASP.NET бета-версии MVC 4 необходимо удалить предварительную версию разработчика .NET 4.5.
ASP.NET MVC 4 можно установить и запустить параллельно с ASP.NET MVC 3.
Документация
Документацию по ASP.NET MVC доступна на веб-сайте MSDN по URL-адресу:
https://go.microsoft.com/fwlink/?LinkID=243043
Руководства и другие сведения о ASP.NET MVC доступны на странице MVC 4 веб-сайта ASP.NET (https://www.asp.net/mvc/mvc4).
Поддержка
Это предварительная версия и официально не поддерживается. Если у вас есть вопросы о работе с этим выпуском, опубликуйте их на форуме ASP.NET MVC (https://forums.asp.net/1146.aspx), где участники ASP.NET сообщества часто могут предоставлять неофициальную поддержку.
Требования к программному обеспечению
Для ASP.NET компонентов MVC 4 для Visual Studio требуется PowerShell 2.0 и Visual Studio 2010 с пакетом обновления 1 (SP1) или Visual Web Developer Express 2010 с пакетом обновления 1 (SP1).
Обновление проекта ASP.NET MVC 3 до ASP.NET MVC 4
ASP.NET MVC 4 можно установить параллельно с ASP.NET MVC 3 на том же компьютере, что обеспечивает гибкость при выборе времени обновления приложения ASP.NET MVC 3 до ASP.NET MVC 4.
Самый простой способ обновления — создать новый ASP.NET проект MVC 4 и скопировать все представления, контроллеры, код и файлы содержимого из существующего проекта MVC 3 в новый проект, а затем обновить ссылки на сборки в новом проекте в соответствии со старым проектом. Если вы внесли изменения в файл Web.config в проекте MVC 3, необходимо также объединить эти изменения в файл Web.config в проекте MVC 4.
Чтобы вручную обновить существующее приложение ASP.NET MVC 3 до версии 4, выполните следующие действия.
Во всех Web.config файлах проекта (один находится в корне проекта, один в папке Views и один в папке Views для каждой области проекта) замените каждый экземпляр следующего текста:
System.Web.Mvc, Version=3.0.0.0 System.Web.WebPages, Version=1.0.0.0 System.Web.Helpers, Version=1.0.0.0 System.Web.WebPages.Razor, Version=1.0.0.0
со следующим соответствующим текстом:
System.Web.Mvc, Version=4.0.0.0 System.Web.WebPages, Version=2.0.0.0 System.Web.Helpers, Version=2.0.0.0, System.Web.WebPages.Razor, Version=2.0.0.0,
В корневом файле Web.config обновите элемент webPages:Version до 2.0.0.0 и добавьте новый ключ PreserveLoginUrl со значением true:
<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="PreserveLoginUrl" value="true" /> </appSettings>
В Обозреватель решений удалите ссылку на System.Web.Mvc (которая указывает на библиотеку DLL версии 3). Затем добавьте ссылку на System.Web.Mvc (версия 4.0.0.0). В частности, внесите следующие изменения, чтобы обновить ссылки на сборки. Дополнительные сведения:
В Обозреватель решений удалите ссылки на следующие сборки:
- System.Web.Mvc(v3.0.0.0)
- System.Web.WebPages(v1.0.0.0)
- System.Web.Razor(v1.0.0.0)
- System.Web.WebPages.Deployment(v1.0.0.0)
- System.Web.WebPages.Razor(v1.0.0.0)
Добавьте ссылки на следующие сборки:
- System.Web.Mvc(v4.0.0.0)
- System.Web.WebPages(v2.0.0.0)
- System.Web.Razor(v2.0.0.0)
- System.Web.WebPages.Deployment(v2.0.0.0)
- System.Web.WebPages.Razor(v2.0.0.0)
В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите пункт Выгрузить проект. Затем снова щелкните имя правой кнопкой мыши и выберите Изменить имя проекта.csproj.
Найдите элемент ProjectTypeGuids и замените {E53F8FEA-EAE0-44A6-8774-FFD645390401} на {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Сохраните изменения, закройте файл проекта (CSPROJ), который вы редактировали, щелкните правой кнопкой мыши проект и выберите Перезагрузить проект.
Если проект ссылается на сторонние библиотеки, скомпилированные с помощью предыдущих версий ASP.NET MVC, откройте корневой файл Web.config и добавьте следующие три элемента bindingRedirect в раздел конфигурации :
<configuration> <!--... elements deleted for clarity ...--> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>
Новые функции в бета-версии ASP.NET MVC 4
В этом разделе описываются функции, представленные в бета-версии ASP.NET MVC 4.
ASP.NET Web API
ASP.NET MVC 4 теперь включает веб-API ASP.NET, новую платформу для создания служб HTTP, которые могут охватить широкий спектр клиентов, включая браузеры и мобильные устройства. веб-API ASP.NET также является идеальной платформой для создания служб RESTful.
веб-API ASP.NET включает поддержку следующих функций:
- Современная модель программирования HTTP: Прямой доступ к HTTP-запросам и ответам в веб-API и управление ими с помощью новой строго типизированной объектной модели HTTP. Та же модель программирования и конвейер HTTP симметрично доступны на клиенте через новый тип HttpClient.
- Полная поддержка маршрутов. Веб-API теперь поддерживают полный набор возможностей маршрутизации, которые всегда были частью веб-стека, включая параметры и ограничения маршрутов. Кроме того, сопоставление с действиями имеет полную поддержку соглашений, поэтому больше не нужно применять атрибуты, такие как [HttpPost], к вашим классам и методам.
- Согласование содержимого. Клиент и сервер могут работать вместе, чтобы определить правильный формат данных, возвращаемых из API. Мы предоставляем поддержку по умолчанию для форматов XML, JSON и URL-адресов формы, и вы можете расширить эту поддержку, добавив собственные модули форматирования или даже заменив стратегию согласования содержимого по умолчанию.
- Привязка и проверка модели: Связыватели моделей предоставляют простой способ извлечения данных из различных частей HTTP-запроса и преобразования этих частей сообщений в объекты .NET, которые могут использоваться действиями веб-API.
- Фильтры: Веб-API теперь поддерживают фильтры, включая известные фильтры, такие как атрибут [Authorize]. Вы можете создавать и подключать собственные фильтры для действий, авторизации и обработки исключений.
- Композиция запроса: Просто возвращая IQueryable<T>, ваш веб-API будет поддерживать запросы с помощью соглашений об URL-адресах OData.
- Улучшенная возможность тестирования сведений о HTTP: Вместо настройки сведений о HTTP в статических объектах контекста действия веб-API теперь могут работать с экземплярами HttpRequestMessage и HttpResponseMessage. Кроме того, существуют универсальные версии этих объектов, позволяющие работать с пользовательскими типами в дополнение к типам HTTP.
- Улучшенная инверсия элемента управления (IoC) через DependencyResolver: Веб-API теперь использует шаблон указателя служб, реализованный сопоставителем зависимостей MVC, для получения экземпляров для многих различных объектов.
- Конфигурация на основе кода: Настройка веб-API выполняется исключительно с помощью кода, оставляя файлы конфигурации чистыми.
- Локальный узел: Веб-API можно размещать в вашем собственном процессе в дополнение к СЛУЖБАм IIS, при этом при этом используются все возможности маршрутов и других функций веб-API.
Дополнительные сведения о веб-API ASP.NET см. на странице https://www.asp.net/web-api.
одностраничное приложение ASP.NET
ASP.NET MVC 4 теперь включает предварительную версию интерфейса для создания одностраничных приложений со значительным взаимодействием на стороне клиента с помощью JavaScript и веб-API. Эта поддержка включает следующее.
- Набор библиотек JavaScript для более полного локального взаимодействия с кэшированными данными
- Дополнительные компоненты веб-API для единиц работы и поддержки DAL
- Шаблон проекта MVC с формированием шаблонов для быстрого начала работы
Дополнительные сведения о поддержке одностраничных приложений в ASP.NET MVC 4 см. на странице https://www.asp.net/single-page-application.
Усовершенствования шаблонов проектов по умолчанию
Шаблон, используемый для создания новых проектов ASP.NET MVC 4, обновлен для создания более современного веб-сайта:
В дополнение к косметическим улучшениям в новом шаблоне улучшены функциональные возможности. Шаблон использует метод адаптивной отрисовки, чтобы хорошо выглядеть как в классических браузерах, так и в мобильных браузерах без каких-либо настроек.
Чтобы увидеть адаптивную отрисовку в действии, можно использовать мобильный эмулятор или просто попытаться изменить размер окна браузера рабочего стола. Когда окно браузера становится достаточно маленьким, макет страницы изменится.
Еще одним улучшением шаблона проекта по умолчанию является использование JavaScript для предоставления более полного пользовательского интерфейса. Ссылки "Вход" и "Регистрация", используемые в шаблоне, являются примерами использования диалогового окна пользовательского интерфейса jQuery для представления полнофункционированного экрана входа:
Шаблон мобильного проекта
Если вы начинаете новый проект и хотите создать сайт специально для браузеров мобильных устройств и планшетов, можно использовать новый шаблон проекта мобильного приложения. Он основан на jQuery Mobile, библиотеке с открытым исходным кодом для создания пользовательского интерфейса, оптимизированного для сенсорного ввода:
Этот шаблон содержит ту же структуру приложения, что и шаблон интернет-приложения (и код контроллера практически идентичен), но он стилистируется с помощью jQuery Mobile, чтобы хорошо выглядеть и хорошо работать на мобильных устройствах с сенсорным управлением. Дополнительные сведения о структуре и стили мобильного пользовательского интерфейса см. на веб-сайте проекта jQuery Mobile.
Если у вас уже есть сайт, ориентированный на настольный компьютер, на который вы хотите добавить представления, оптимизированные для мобильных устройств, или если вы хотите создать единый сайт, который обслуживает представления в разных стилях для классических и мобильных браузеров, можно использовать новую функцию Режимы отображения. (См. следующий раздел.)
Режимы отображения
Новая функция Режимы отображения позволяет приложению выбирать представления в зависимости от браузера, который выполняет запрос. Например, если браузер компьютеров запрашивает домашнюю страницу, приложение может использовать шаблон Views\Home\Index.cshtml. Если мобильный браузер запрашивает домашнюю страницу, приложение может вернуть шаблон Views\Home\Index.mobile.cshtml.
Макеты и части также можно переопределить для определенных типов браузеров. Пример:
- Если папка Views\Shared содержит шаблоны _Layout.cshtml и _Layout.mobile.cshtml, приложение по умолчанию будет использовать _Layout.mobile.cshtml во время запросов из мобильных браузеров и _Layout.cshtml во время других запросов.
- Если папка содержит как _MyPartial.cshtml, так и _MyPartial.mobile.cshtml, инструкция @Html.Partial("_MyPartial") будет отображать _MyPartial.mobile.cshtml во время запросов из мобильных браузеров и _MyPartial.cshtml во время других запросов.
Если вы хотите создать более конкретные представления, макеты или частичные представления для других устройств, можно зарегистрировать новый экземпляр DefaultDisplayMode , чтобы указать имя для поиска, если запрос удовлетворяет определенным условиям. Например, можно добавить следующий код в метод Application_Start в файле Global.asax, чтобы зарегистрировать строку "iPhone" в качестве режима отображения, который применяется, когда браузер Apple iPhone делает запрос:
DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
После выполнения этого кода, когда браузер Apple iPhone отправляет запрос, ваше приложение будет использовать макет Views\Shared\_Layout.iPhone.cshtml (если он существует).
jQuery Mobile, переключатель представлений и переопределение браузера
jQuery Mobile — это библиотека открытый код для создания веб-интерфейса, оптимизированного для сенсорного ввода. Если вы хотите использовать jQuery Mobile с приложением ASP.NET MVC 4, вы можете скачать и установить пакет NuGet, который поможет вам приступить к работе. Чтобы установить его из консоли диспетчера пакетов Visual Studio, введите следующую команду:
Install-Package jQuery.Mobile.MVC
При этом устанавливаются jQuery Mobile и некоторые вспомогательные файлы, в том числе следующие:
- Views/Shared/_Layout.Mobile.cshtml— макет на основе jQuery Mobile.
- Компонент view-switcher, состоящий из частичного представления Views/Shared/_ViewSwitcher.cshtml и контроллера ViewSwitcherController.cs.
После установки пакета запустите приложение с помощью мобильного браузера (или аналогичного, например надстройки Firefox User Agent Switcher ). Вы увидите, что ваши страницы выглядят совсем по-другому, так как jQuery Mobile обрабатывает макет и стили. Чтобы воспользоваться этим, можно сделать следующее:
- Создайте переопределения представлений для мобильных устройств, как описано ранее в разделе Режимы отображения (например, создайте Views\Home\Index.mobile.cshtml, чтобы переопределить Views\Home\Index.cshtml для мобильных браузеров).
- Дополнительные сведения о добавлении элементов пользовательского интерфейса, оптимизированных для сенсорного ввода, в мобильные представления см. в документации по jQuery Mobile .
Соглашение для веб-страниц, оптимизированных для мобильных устройств, заключается в добавлении ссылки, текст которой похож на представление рабочего стола или режим полного сайта, который позволяет пользователям переключаться на классическую версию страницы. Пакет jQuery.Mobile.MVC содержит пример компонента view-switcher для этой цели. Он используется в представлении по умолчанию Views\Shared\_Layout.Mobile.cshtml и выглядит следующим образом при отрисовке страницы:
Если посетители щелкнули ссылку, они переключились на классическую версию той же страницы.
Так как макет рабочего стола не будет включать переключатель представлений по умолчанию, посетители не смогут перейти в мобильный режим. Чтобы включить это, добавьте следующую ссылку на _ViewSwitcher в макет рабочего стола непосредственно внутри <элемента body> :
<body>
@Html.Partial("_ViewSwitcher")
...
Переключатель представлений использует новую функцию, которая называется Переопределение браузера. Эта функция позволяет приложению обрабатывать запросы так, как если бы они поступали из другого браузера (агента пользователя), а не из того, откуда они на самом деле. В следующей таблице перечислены методы, предоставляемые переопределением браузера.
HttpContext.SetOverriddenBrowser(userAgentString) |
Переопределяет значение агента пользователя в запросе с указанием указанного агента пользователя. |
---|---|
HttpContext.GetOverriddenUserAgent() |
Возвращает значение переопределения агента пользователя запроса или фактическую строку агента пользователя, если переопределение не указано. |
HttpContext.GetOverriddenBrowser() |
Возвращает экземпляр HttpBrowserCapabilitiesBase , соответствующий агенту пользователя, который в данный момент задан для запроса (фактический или переопределенный). Это значение можно использовать для получения таких свойств, как IsMobileDevice. |
HttpContext.ClearOverriddenBrowser() |
Удаляет все переопределенные агенты пользователя для текущего запроса. |
Переопределение браузера — это основная функция ASP.NET MVC 4, которая доступна, даже если вы не установили пакет jQuery.Mobile.MVC. Однако это влияет только на представление, макет и частичный выбор представлений. Это не влияет на другие функции ASP.NET, которые зависят от объекта Request.Browser .
По умолчанию переопределение агента пользователя хранится с помощью файла cookie. Если вы хотите сохранить переопределение в другом месте (например, в базе данных), можно заменить поставщика по умолчанию (BrowserOverrideStores.Current). Документация по этому поставщику будет доступна для последующего выпуска ASP.NET MVC.
Рецепты для создания кода в Visual Studio
Новая функция "Рецепты" позволяет Visual Studio создавать код для конкретного решения на основе пакетов, которые можно установить с помощью NuGet. Платформа Recipes позволяет разработчикам легко создавать подключаемые модули для создания кода, которые можно также использовать для замены встроенных генераторов кода для добавления области, добавления контроллера и представления. Так как рецепты развертываются как пакеты NuGet, их можно легко включить в систему управления версиями и автоматически предоставить всем разработчикам проекта. Они также доступны для каждого решения.
Поддержка задач для асинхронных контроллеров
Теперь асинхронные методы действий можно записывать в виде отдельных методов, возвращающих объект типа Task или Task<ActionResult>.
Например, если вы используете Visual C# 5 (или Async CTP), можно создать асинхронный метод действия, который выглядит следующим образом:
public async Task<ActionResult> Index(string city) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common",
new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(),
SportsScores = await sportsService.GetScoresAsync()
});
}
В предыдущем методе действия вызовы newsService.GetHeadlinesAsync и sportsService.GetScoresAsync вызываются асинхронно и не блокируют поток из пула потоков.
Асинхронные методы действий, возвращающие экземпляры задач , также могут поддерживать время ожидания. Чтобы сделать метод действия отменяемым, добавьте параметр типа CancellationToken в сигнатуру метода действия. В следующем примере показан асинхронный метод действия, который имеет время ожидания 2500 миллисекунд и отображает представление TimedOut для клиента в случае истечения времени ожидания.
[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task<ActionResult> Index(string city,
CancellationToken cancellationToken) {
var newsService = new NewsService();
var sportsService = new SportsService();
return View("Common",
new PortalViewModel {
NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
SportsScores = await sportsService.GetScoresAsync(cancellationToken)
});
}
Пакет Azure SDK
ASP.NET бета-версия MVC 4 поддерживает выпуск windows Azure SDK за сентябрь 2011 г. 1.5.
Известные проблемы и критические изменения
После установки ASP.NET бета-версии MVC 4 редактор CSHTML/VBHTML в Редакторе CSHTML/VBHTML в Visual Studio 2010 с пакетом обновления 1 (SP1) может надолго приостановиться после ввода фрагмента кода или JavaScript в файлах cshtml или vbhtml. Это происходит только в ASP.NET только что созданных и еще не скомпилированных приложений MVC 4.
Обходной путь — скомпилировать проект, чтобы получить сборки в папке bin. Обратите внимание, что при очистке проекта, который удаляет сборки из папки bin, проблема с редактором вернется.
Это будет исправлено в следующем выпуске.
Шаблоны проектов C# для Бета-версии Visual Studio 11 содержат неправильную строку подключения в файле Global.asax.cs. Подключение по умолчанию, указанное в методе Application_Start для проектов, созданных в Visual Studio 11 Beta, содержит строку подключения LocalDB, которая содержит символ обратной косой черты (). Это приводит к ошибке подключения при попытке доступа к Entity Framework DbContext, который создает исключение SqlException.
Чтобы устранить эту проблему, экранируйте символ обратной косой черты в методе App_Start файла Global.asax.cs, чтобы он отображал следующее:
Database.DefaultConnectionFactory = new SqlConnectionFactory( "Data Source=(localdb)\\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
ASP.NET приложения MVC 4, предназначенные для .NET 4.5, будут вызывать исключение FileLoadException при попытке получить доступ к сборке System.Net.Http.dll при запуске в .NET 4.0. ASP.NET приложения MVC 4, созданные в .NET 4.5, содержат перенаправление привязки, которое приведет к созданию исключение FileLoadException с сообщением "Не удалось загрузить файл или сборку System.Net.Http или одну из его зависимостей" при выполнении приложения в системе с установленной .NET 4.0. Чтобы устранить эту проблему, удалите из web.config следующее перенаправление привязки:
<dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly>
Элемент привязки сборки в измененном web.config должен выглядеть следующим образом:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding>
Шаблон элемента "Добавить контроллер" в проектах Visual Basic создает неправильное пространство имен при вызовеиз области. При добавлении контроллера в область в проекте ASP.NET MVC, использующего Visual Basic, шаблон элемента вставляет в контроллер неправильное пространство имен. В результате возникает ошибка "файл не найден" при переходе к любому действию в контроллере.
Созданное пространство имен пропускает все после корневого пространства имен. Например, созданное пространство имен — RootNamespace , но должно иметь значение RootNamespace.Areas.AreaName.Controllers .
Критические изменения в обработчике представлений Razor. В рамках перезаписи средства синтаксического анализа Razor из System.Web.Mvc.Razor были удалены следующие типы:
- ModelSpan
- MvcVBRazorCodeGenerator
- MvcCSharpRazorCodeGenerator
- MvcVBRazorCodeParser
Также были удалены следующие методы:
- MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
- MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
- MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
Если WebMatrix.WebData.dll включен в каталог /bin приложений ASP.NET MVC 4, он получает URL-адрес для проверки подлинности с помощью форм. Добавление сборки WebMatrix.WebData.dll в приложение (например, если выбрать "веб-страницы ASP.NET с синтаксисом Razor" при использовании диалогового окна Добавление развертываемых зависимостей) переопределит перенаправление входа для проверки подлинности в /account/logon, а не /account/login, как ожидается в ASP.NET контроллере учетной записи MVC по умолчанию. Чтобы предотвратить такое поведение и использовать URL-адрес, уже указанный в разделе проверки подлинности web.config, можно добавить appSetting с именем PreserveLoginUrl и присвоить ему значение true:
<appSettings> <add key="PreserveLoginUrl" value="true"/> </appSettings>
Не удается установить диспетчер пакетов NuGet при попытке установить ASP.NET MVC 4 для параллельной установки Visual Studio 2010 и Visual Web Developer 2010. Чтобы запустить Visual Studio 2010 и Visual Web Developer 2010 параллельно с ASP.NET MVC 4, необходимо установить ASP.NET MVC 4 после установки обеих версий Visual Studio.
Удаление ASP.NET MVC 4 завершается ошибкой, если необходимые компоненты уже удалены. Чтобы удалить ASP.NET MVC 4, необходимо удалить ASP.NET MVC 4 перед удалением Visual Studio.
При запуске проекта веб-API по умолчанию отображаются инструкции, которые неправильно направляют пользователя на добавление маршрутов с помощью метода RegisterApis, которого не существует. Маршруты следует добавлять в метод RegisterRoutes с помощью таблицы маршрутов ASP.NET.
Установка ASP.NET бета-версии MVC 4 прерывается ASP.NET приложениями MVC 3 RTM. ASP.NET приложенияМ MVC 3, созданным в выпуске RTM (а не в выпуске обновления средств ASP.NET MVC 3), требуются следующие изменения, чтобы работать параллельно с ASP.NET MVC 4 Beta. Создание проекта без внесения этих обновлений приводит к ошибкам компиляции.
Необходимые обновления
В корневом файле Web.config добавьте новую <запись appSettings> с ключом webPages:Version и значением 1.0.0.0.
<appSettings> <add key="webpages:Version" value="1.0.0.0"/> <add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> </appSettings>
В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите пункт Выгрузить проект. Затем снова щелкните имя правой кнопкой мыши и выберите Изменить имя проекта.csproj.
Найдите следующие ссылки на сборки:
<Reference Include="System.Web.WebPages"/> <Reference Include="System.Web.Helpers" />
Замените их следующим кодом:
<Reference Include="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> <Reference Include="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
Сохраните изменения, закройте файл проекта (CSPROJ), который вы редактировали, а затем щелкните проект правой кнопкой мыши и выберите Перезагрузить.