Заметки о выпуске ASP.NET MVC 4

В этом документе описывается выпуск ASP.NET MVC 4 .

Замечания по установке

ASP.NET MVC 4 для Visual Studio 2010 можно установить с домашней страницы ASP.NET MVC 4 с помощью установщика веб-платформы.

Перед установкой ASP.NET MVC 4 рекомендуется удалить все ранее установленные предварительные версии ASP.NET MVC 4. Вы можете обновить бета-версию ASP.NET MVC 4 до ASP.NET MVC 4 без удаления.

Этот выпуск несовместим с предварительными версиями платформа .NET Framework 4.5. Перед установкой ASP.NET MVC 4 необходимо отдельно обновить все установленные предварительные выпуски платформа .NET Framework 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 4 полностью поддерживается. Если у вас есть вопросы о работе с этим выпуском, вы также можете опубликовать их на форуме 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 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 ASP.NET поддерживает полный набор возможностей маршрутизации ASP.NET маршрутизации, включая параметры и ограничения маршрута. Кроме того, используйте простые соглашения для сопоставления действий с методами HTTP.
  • Согласование содержимого: Клиент и сервер могут работать вместе, чтобы определить правильный формат данных, возвращаемых из веб-API. веб-API ASP.NET обеспечивает поддержку форматов XML, JSON и URL-адресов формы по умолчанию, и вы можете расширить эту поддержку, добавив собственные модули форматирования или даже заменив стратегию согласования содержимого по умолчанию.
  • Привязка и проверка модели: Связыватели моделей предоставляют простой способ извлечения данных из различных частей HTTP-запроса и преобразования этих частей сообщений в объекты .NET, которые могут использоваться действиями веб-API. Проверка также выполняется для параметров действия на основе заметок к данным.
  • Фильтры: веб-API ASP.NET поддерживает фильтры, включая известные фильтры, такие как атрибут [Авторизовать]. Вы можете создавать и подключать собственные фильтры для действий, авторизации и обработки исключений.
  • Композиция запроса: Используйте атрибут фильтра [Queryable] для действия, возвращающего IQueryable , чтобы обеспечить поддержку запросов веб-API с помощью соглашений о запросах OData.
  • Улучшенная возможность тестирования. Вместо настройки сведений о HTTP в статических объектах контекста действия веб-API работают с экземплярами HttpRequestMessage и HttpResponseMessage. Создайте проект модульного теста вместе с проектом веб-API, чтобы быстро приступить к написанию модульных тестов для функций веб-API.
  • Конфигурация на основе кода: веб-API ASP.NET настройка выполняется исключительно с помощью кода, оставляя файлы конфигурации чистыми. Используйте предоставленный шаблон указателя служб для настройки точек расширяемости.
  • Улучшенная поддержка контейнеров Inversion of Control (IoC): веб-API ASP.NET обеспечивает большую поддержку контейнеров IoC за счет улучшенной абстракции сопоставителя зависимостей.
  • Локальный узел: Веб-API можно размещать в вашем собственном процессе в дополнение к СЛУЖБАм IIS, при этом при этом используются все возможности маршрутов и других функций веб-API.
  • Создание пользовательских страниц справки и тестов: Теперь вы можете легко создавать пользовательские страницы справки и тестирования для веб-API, используя новую службу IApiExplorer , чтобы получить полное описание веб-API во время выполнения.
  • Мониторинг и диагностика. веб-API ASP.NET теперь предоставляет легкую инфраструктуру трассировки, которая упрощает интеграцию с существующими решениями ведения журнала, такими как System.Diagnostics, etW и сторонние платформы ведения журнала. Вы можете включить трассировку, предоставив реализацию ITraceWriter и добавив ее в конфигурацию веб-API.
  • Создание ссылок: Используйте веб-API ASP.NET UrlHelper для создания ссылок на связанные ресурсы в том же приложении.
  • Шаблон проекта веб-API: Выберите новый проект веб-API из мастера создания проекта MVC 4, чтобы быстро приступить к работе с веб-API ASP.NET.
  • Леса: Диалоговое окно Добавление контроллера используется для быстрого формирования шаблонов контроллера веб-API на основе типа модели на основе Entity Framework.

Дополнительные сведения о веб-API ASP.NET см. на странице https://www.asp.net/web-api.

Усовершенствования шаблонов проектов по умолчанию

Шаблон, используемый для создания новых проектов ASP.NET MVC 4, обновлен для создания более современного веб-сайта:

Снимок экрана: представление браузера страницы нового шаблона проекта.

В дополнение к косметическим улучшениям в новом шаблоне улучшены функциональные возможности. Шаблон использует метод адаптивной отрисовки, чтобы хорошо выглядеть как в классических браузерах, так и в мобильных браузерах без каких-либо настроек.

Снимок экрана: представление браузера для мобильных устройств для классической версии страницы нового шаблона проекта.

Чтобы увидеть адаптивную отрисовку в действии, можно использовать мобильный эмулятор или просто попытаться изменить размер окна браузера рабочего стола. Когда окно браузера становится достаточно маленьким, макет страницы изменится.

Шаблон мобильного проекта

Если вы начинаете новый проект и хотите создать сайт специально для браузеров мобильных устройств и планшетов, можно использовать новый шаблон проекта мобильного приложения. Он основан на 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 (если он существует). Дополнительные сведения о режиме отображения см. в разделе ASP.NET мобильных функций MVC 4. Приложения, использующие DisplayModeProvider, должны установить пакет NuGet Fixed DisplayModes . Обновление ASP.NET осенью 2012 г. включает пакет NuGet Fixed DisplayModes в новые шаблоны проектов. Дополнительные сведения об исправлении см. в разделе исправление ошибки кэширования мобильных устройств ASP.NET MVC 4 .

Мобильные и мобильные функции jQuery

Сведения о создании мобильных приложений с помощью ASP.NET MVC 4 с помощью jQuery Mobile см. в руководстве ASP.NET мобильных функций MVC 4.

Поддержка задач для асинхронных контроллеров

Теперь можно создавать асинхронные методы действий в виде отдельных методов, возвращающих объект типа Task или Task<ActionResult>.

Дополнительные сведения см. в статье Использование асинхронных методов в ASP.NET MVC 4.

Пакет Azure SDK

ASP.NET MVC 4 поддерживает версии 1.6 и более поздние выпуски пакета SDK для Windows Azure.

Миграции баз данных

ASP.NET проектов MVC 4 теперь включает Entity Framework 5. Одной из замечательных функций Entity Framework 5 является поддержка миграции баз данных. Эта функция позволяет легко развивать схему базы данных с помощью миграции с учетом кода, сохраняя при этом данные в базе данных. Дополнительные сведения о миграции баз данных см. в разделе Добавление нового поля в модель фильма и таблицуруководства Введение в ASP.NET MVC 4.

Пустой шаблон проекта

Шаблон проекта MVC Empty теперь действительно пуст, поэтому вы можете начать с чистого листа. Более ранняя версия шаблона пустого проекта была переименована в Базовая.

Добавление контроллера в любую папку проекта

Теперь можно щелкнуть правой кнопкой мыши и выбрать Команду Добавить контроллер из любой папки в проекте MVC. Это обеспечивает большую гибкость при организации контроллеров, включая хранение контроллеров MVC и веб-API в отдельных папках.

Объединение и минификация

Платформа объединения и минификации позволяет сократить количество HTTP-запросов, необходимых веб-странице, объединяя отдельные файлы в один пакетный файл для сценариев и CSS. Затем он может уменьшить общий размер этих запросов, миниифицируя содержимое пакета. Минификация может включать такие действия, как исключение пробелов, сокращение имен переменных до даже сворачивания селекторов CSS на основе их семантики. Пакеты объявляются и настраиваются в коде и легко ссылаются в представлениях с помощью вспомогательных методов, которые могут создавать одну ссылку на пакет или, при отладке, несколько ссылок на отдельное содержимое пакета. Дополнительные сведения см. в разделе Объединение и минификация.

Включение имен входа с Facebook и других сайтов с помощью OAuth и OpenID

Шаблоны по умолчанию в ASP.NET MVC 4 Internet Project теперь включают поддержку входа OAuth и OpenID с помощью библиотеки DotNetOpenAuth. Сведения о настройке поставщика OAuth или OpenID см. в разделах Поддержка OAuth/OpenID для WebForms, MVC и WebPages и документация по функциям OAuth и OpenID в веб-страницы ASP.NET.

Обновление проекта 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 в новый проект, а затем обновить ссылки на сборки в новом проекте в соответствии с любыми шаблонами, не входящими в MVC, которые вы используете. Если вы внесли изменения в файл Web.config в проекте MVC 3, необходимо также объединить эти изменения в файл Web.config в проекте MVC 4.

Чтобы вручную обновить существующее приложение ASP.NET MVC 3 до версии 4, выполните следующие действия.

  1. Во всех Web.config файлов проекта (в корневом каталоге проекта есть один файл, один в папке Views и один в папке Views для каждой области проекта) замените каждый экземпляр следующего текста (примечание. System.Web.WebPages, Version=1.0.0.0 не найден в проектах, созданных с помощью Visual Studio 2012):

    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
    
  2. В корневом файле 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>
    
  3. В Обозреватель решений щелкните правой кнопкой мыши ссылки и выберите Управление пакетами NuGet. В области слева выберите Online\NuGet официальный источник пакета, а затем обновите следующее:

    • ASP.NET MVC 4
    • (Необязательно) jQuery, проверка jQuery и пользовательский интерфейс jQuery
    • (Необязательно) Entity Framework
    • (Optonal) Modernizr
  4. В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите пункт Выгрузить проект. Затем снова щелкните имя правой кнопкой мыши и выберите Изменить имя_проекта.csproj.

  5. Найдите элемент ProjectTypeGuids и замените {E53F8FEA-EAE0-44A6-8774-FFD645390401} на {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Сохраните изменения, закройте файл проекта (CSPROJ), который вы редактировали, щелкните проект правой кнопкой мыши и выберите Перезагрузить проект.

  7. Если проект ссылается на сторонние библиотеки, скомпилированные с помощью предыдущих версий 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 Release Candidate можно найти здесь:

Ниже приведены основные изменения по сравнению с ASP.NET релиз-кандидатом MVC 4 в этом выпуске.

  • Конфигурация контроллера. веб-API ASP.NET контроллерам можно присвоить настраиваемый атрибут, реализующий IControllerConfiguration для настройки собственных модулей форматирования, селектора действий и связывателей параметров. Атрибут HttpControllerConfigurationAttribute удален.
  • Обработчики сообщений маршрута: Теперь можно указать окончательный обработчик сообщений в цепочке запросов для заданного маршрута. Это позволяет использовать маршрутизацию для собственных конечных точек (не iHttpController).
  • Уведомления о ходе выполнения.ProgressMessageHandler создает уведомление о ходе выполнения как для отправляемых сущностей запроса, так и для скачиваемых сущностей ответа. С помощью этого обработчика можно отслеживать, насколько далеко вы отправляете текст запроса или загружаете текст ответа.
  • Принудительная отправка содержимого: Класс PushStreamContent позволяет использовать сценарии, в которых производитель данных хочет записывать данные непосредственно в запрос или ответ (синхронно или асинхронно) с помощью потока. Когда PushStreamContent будет готов принять данные, он вызывает делегат действия с потоком вывода. Затем разработчик может выполнять запись в поток до тех пор, пока это необходимо, и закрыть поток после завершения записи. PushStreamContent обнаруживает закрытие потока и завершает базовую асинхронную задачу для записи содержимого.
  • Создание ответов об ошибках: Используйте тип HttpError для согласованного представления сведений об ошибках, таких как ошибки проверки и исключения, сохраняя при этом значение IncludeErrorDetailPolicy. Используйте новые методы расширения CreateErrorResponse , чтобы легко создавать ответы об ошибках с httpError в качестве содержимого. Содержимое HttpError полностью согласовано.
  • Удалена mediaRangeMapping: Диапазоны типов мультимедиа теперь обрабатываются переговорщиком содержимого по умолчанию.
  • Привязка параметров по умолчанию для параметров простого типа теперь — [FromUri]: В предыдущих выпусках веб-API ASP.NET привязку параметров по умолчанию для параметров простого типа, которые использовали привязку модели. Привязка параметров по умолчанию для параметров простого типа теперь — [FromUri].
  • Выбор действия учитывает обязательные параметры: Выбор действия в веб-API ASP.NET теперь выбирает действие, только если указаны все необходимые параметры, поступающие из URI. Параметр можно указать как необязательный, указав значение по умолчанию для аргумента в сигнатуре метода действия.
  • Настройка привязок параметров HTTP: Используйте ParameterBindingAttribute , чтобы настроить привязку параметров для определенного параметра действия, или используйте ParameterBindingRules в HttpConfiguration для более широкой настройки привязок параметров.
  • Улучшения MediaTypeFormatter: Теперь у модулей форматирования есть доступ к полному экземпляру HttpContent .
  • Выбор политики буферизации узла: Реализуйте и настройте службу IHostBufferPolicySelector в веб-API ASP.NET, чтобы позволить узлам определять политику использования буферизации.
  • Доступ к сертификатам клиента не зависит от узла: Используйте метод расширения GetClientCertificate , чтобы получить предоставленный сертификат клиента из сообщения запроса.
  • Расширяемость согласования содержимого: Настройте согласование содержимого, наследуя его от DefaultContentNegotiator и переопределив любой аспект согласования содержимого.
  • Поддержка возврата 406 недопустимых ответов: Теперь вы можете вернуть ответы 406 Not Acceptable в веб-API ASP.NET, если подходящий модуль форматирования не найден, создав DefaultContentNegotiator с параметром excludeMatchOnTypeOnly, равным true.
  • Чтение данных формы как NameValueCollection или JToken: Данные формы можно считывать в строке запроса URI или в тексте запроса как NameValueCollection с помощью методов расширения ParseQueryString и ReadAsFormDataAsync соответственно. Аналогичным образом данные формы можно считывать в строке запроса URI или в тексте запроса в виде JToken с помощью методов расширения TryReadQueryAsJson и ReadAsAsync<T> соответственно.
  • Многокомпонентные улучшения: Теперь можно написать MultipartStreamProvider , полностью адаптированный к типу составных данных MIME, которые он может считывать и представлять результат оптимальным способом для пользователя. Вы также можете зацепить шаг постобработки в MultipartStreamProvider , что позволяет реализации выполнять любые действия, необходимые для постобработки в частях многокомпонентного тела MIME. Например, реализация MultipartFormDataStreamProvider считывает части данных html-формы и добавляет их в NameValueCollection , чтобы их было легко получить от вызывающего объекта.
  • Усовершенствования создания ссылок:UrlHelper больше не зависит от HttpControllerContext. Теперь вы можете получить доступ к UrlHelper из любого контекста, в котором доступен HttpRequestMessage .
  • Изменение порядка выполнения обработчика сообщений: Обработчики сообщений теперь выполняются в том порядке, в который они настроены, а не в обратном порядке.
  • Вспомогательное средство для подключения обработчиков сообщений: Новый объект HttpClientFactory , который может подключить DelegatingHandlers и создать HttpClient с нужным конвейером, готовым к работе. Он также предоставляет функциональные возможности для подключения с альтернативными внутренними обработчиками (по умолчанию — HttpClientHandler), а также для подключения при использовании HttpMessageInvoker или другого DelegatingHandler вместо HttpClient в качестве верхнего вызова.
  • Поддержка cdn в ASP.NET веб-оптимизации. ASP.NET веб-оптимизация теперь поддерживает альтернативные пути CDN, позволяющие указать для каждого пакета дополнительный URL-адрес, указывающий на тот же ресурс в сети доставки содержимого. Поддержка CDN позволяет получить пакеты сценариев и стилей географически ближе к конечным потребителям веб-приложений. Рабочие приложения должны реализовать резервную реализацию, если СЕТЬ CDN недоступна. Протестируйте резервный вариант.
  • веб-API ASP.NET маршруты и конфигурация перемещены в статический метод WebApiConfig.Register, который можно повторно использовать в тестовом коде. веб-API ASP.NET маршруты ранее были добавлены в RouteConfig.RegisterRoutes вместе со стандартными маршрутами MVC. Маршруты и конфигурация по умолчанию веб-API ASP.NET теперь обрабатываются в отдельном методе WebApiConfig.Register для упрощения тестирования.

Известные проблемы и критические изменения

  • Версия RC и RTM ASP.NET MVC 4 неправильно возвращали кэшированные представления рабочего стола, когда должны возвращаться мобильные представления.

  • Критические изменения в обработчике представлений 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.

  • Установка ASP.NET MVC 4 прерывается ASP.NET приложениями MVC 3 RTM. ASP.NET приложенияМ MVC 3, созданным в выпуске RTM (а не в выпуске обновления средств ASP.NET MVC 3 ), требуются следующие изменения, чтобы работать параллельно с ASP.NET MVC 4. Создание проекта без внесения этих обновлений приводит к ошибкам компиляции.

    Необходимые обновления

    1. В корневом файле 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>
      
    2. В Обозреватель решений щелкните правой кнопкой мыши имя проекта и выберите пункт Выгрузить проект. Затем снова щелкните имя правой кнопкой мыши и выберите Изменить имя проекта.csproj.

    3. Найдите следующие ссылки на сборки:

      <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" />
      
    4. Сохраните изменения, закройте файл проекта (CSPROJ), который вы редактировали, а затем щелкните проект правой кнопкой мыши и выберите Перезагрузить.

  • Изменение проекта ASP.NET MVC 4 на целевую версию 4.0 с версии 4.5 не обновляет ссылку на сборку EntityFramework: Если изменить проект ASP.NET MVC 4 на целевую версию 4.0 после нацеливания 4.5, ссылка на сборку EntityFramework будет по-прежнему указывать на версию 4.5. Чтобы устранить эту проблему, удалите и переустановите пакет NuGet EntityFramework.

  • 403 Запрещено при запуске приложения ASP.NET MVC 4 в Azure после изменения целевой версии 4.0 с версии 4.5: Если изменить проект ASP.NET MVC 4 на целевую версию 4.0 после нацеливания на 4.5, а затем выполнить развертывание в Azure, во время выполнения может появиться ошибка 403 Forbidden. Чтобы обойти эту проблему, добавьте в web.config следующее: <modules runAllManagedModulesForAllRequests="true" />

  • Visual Studio 2012 аварийно завершает работу при вводе "" в строковый литерал в файле Razor. Чтобы обойти эту проблему, сначала введите закрывающая кавычка строкового литерала.

  • Переход к учетной записи и управлению в шаблоне Интернета приводит к ошибке среды выполнения для языков CHS, TRK и CHT. Чтобы устранить эту проблему, измените страницу, разделив @User.Identity.Name, поместив ее как единственное содержимое в строгом> теге<.

  • Поставщики Google и LinkedIn не поддерживаются на веб-сайтах Azure. Используйте альтернативные поставщики проверки подлинности при развертывании на веб-сайтах Azure.

  • При использовании UriPathExtensionMapping с IIS 8 Express/IIS при попытке использовать расширение будут возникать ошибки 404 Not Found. Обработчик статических файлов будет мешать запросам к веб-API, которые используют UriPathExtensionMappings. Задайте runAllManagedModulesForAllRequests=true в web.config, чтобы обойти проблему.

  • Метод Controller.Execute больше не вызывается. Все контроллеры MVC теперь всегда выполняются асинхронно.