Udostępnij za pośrednictwem


informacje o wersji ASP.NET MVC 4

W tym dokumencie opisano wydanie ASP.NET MVC 4 .

Uwagi dotyczące instalacji

ASP.NET MVC 4 dla programu Visual Studio 2010 można zainstalować ze strony głównej ASP.NET MVC 4 przy użyciu Instalatora platformy internetowej.

Zalecamy odinstalowanie wszystkich wcześniej zainstalowanych wersji zapoznawczych ASP.NET MVC 4 przed zainstalowaniem ASP.NET MVC 4. Możesz uaktualnić ASP.NET MVC 4 Beta i Release Candidate do ASP.NET MVC 4 bez odinstalowywania.

Ta wersja nie jest zgodna z żadnymi wersjami wersji zapoznawczej .NET Framework 4.5. Należy oddzielnie uaktualnić wszystkie zainstalowane wersje zapoznawcza .NET Framework 4.5 do wersji ostatecznej przed zainstalowaniem ASP.NET MVC 4.

ASP.NET MVC 4 można zainstalować i uruchomić równolegle z ASP.NET MVC 3.

Dokumentacja

Dokumentacja ASP.NET MVC jest dostępna w witrynie internetowej MSDN pod następującym adresem URL:

https://go.microsoft.com/fwlink/?LinkID=243043

Samouczki i inne informacje o ASP.NET MVC są dostępne na stronie MVC 4 witryny internetowej ASP.NET (https://www.asp.net/mvc/mvc4).

Pomoc techniczna

ASP.NET MVC 4 jest w pełni obsługiwana. Jeśli masz pytania dotyczące pracy z tą wersją, możesz również opublikować je na forum ASP.NET MVC (https://forums.asp.net/1146.aspx), w którym członkowie społeczności ASP.NET często mogą zapewnić nieformalną pomoc techniczną.

Wymagania programowe

Składniki ASP.NET MVC 4 dla programu Visual Studio wymagają programu PowerShell 2.0 i programu Visual Studio 2010 z dodatkiem Service Pack 1 lub Visual Web Developer Express 2010 z dodatkiem Service Pack 1.

Nowe funkcje w ASP.NET MVC 4

W tej sekcji opisano funkcje wprowadzone w wersji ASP.NET MVC 4.

ASP.NET Web API

ASP.NET MVC 4 zawiera ASP.NET internetowy interfejs API, nową platformę do tworzenia usług HTTP, które mogą dotrzeć do szerokiej gamy klientów, w tym przeglądarek i urządzeń przenośnych. ASP.NET internetowy interfejs API to również idealna platforma do tworzenia usług RESTful.

ASP.NET internetowy interfejs API obejmuje obsługę następujących funkcji:

  • Nowoczesny model programowania HTTP: Bezpośredni dostęp do żądań HTTP i odpowiedzi w interfejsach API sieci Web oraz manipulowanie nimi przy użyciu nowego, silnie typizowanego modelu obiektów HTTP. Ten sam model programowania i potok HTTP są symetrycznie dostępne na kliencie za pośrednictwem nowego typu HttpClient .
  • Pełna obsługa tras: ASP.NET internetowy interfejs API obsługuje pełny zestaw możliwości tras ASP.NET Routing, w tym parametry trasy i ograniczenia. Ponadto użyj prostych konwencji, aby mapować akcje na metody HTTP.
  • Negocjacje zawartości: Klient i serwer mogą współpracować w celu określenia odpowiedniego formatu danych zwracanych z internetowego interfejsu API. ASP.NET internetowy interfejs API zapewnia domyślną obsługę formatów zakodowanych w formacie XML, JSON i formularzy, a obsługę tę można rozszerzyć, dodając własne formatery, a nawet zastępując domyślną strategię negocjowania zawartości.
  • Powiązanie i walidacja modelu: Powiązania modelu umożliwiają łatwe wyodrębnianie danych z różnych części żądania HTTP i konwertowanie tych części komunikatów na obiekty platformy .NET, które mogą być używane przez akcje internetowego interfejsu API. Walidacja jest również wykonywana na parametrach akcji na podstawie adnotacji danych.
  • Filtry: ASP.NET internetowy interfejs API obsługuje filtry, w tym dobrze znane filtry, takie jak atrybut [Autoryzuj]. Możesz tworzyć i podłączać własne filtry do akcji, autoryzacji i obsługi wyjątków.
  • Kompozycja zapytań: Użyj atrybutu filtru [Queryable] dla akcji zwracającej funkcję IQueryable , aby umożliwić obsługę wykonywania zapytań względem internetowego interfejsu API za pośrednictwem konwencji zapytań OData.
  • Ulepszona możliwość testowania: Zamiast ustawiać szczegóły HTTP w obiektach statycznych kontekstowych, akcje internetowego interfejsu API działają z wystąpieniami httpRequestMessage i HttpResponseMessage. Utwórz projekt testu jednostkowego wraz z projektem internetowego interfejsu API, aby szybko rozpocząć pisanie testów jednostkowych dla funkcji internetowego interfejsu API.
  • Konfiguracja oparta na kodzie: ASP.NET konfiguracja internetowego interfejsu API odbywa się wyłącznie za pomocą kodu, pozostawiając pliki konfiguracji czyste. Użyj dostarczonego wzorca lokalizatora usług, aby skonfigurować punkty rozszerzalności.
  • Ulepszona obsługa kontenerów Inversion of Control (IoC): interfejs API sieci Web ASP.NET zapewnia doskonałą obsługę kontenerów IoC dzięki ulepszonej abstrakcji funkcji rozpoznawania zależności
  • Samodzielny host: Interfejsy API sieci Web mogą być hostowane we własnym procesie oprócz usług IIS, jednocześnie korzystając z pełnych możliwości tras i innych funkcji internetowego interfejsu API.
  • Utwórz niestandardową pomoc i strony testowe: Teraz możesz łatwo tworzyć niestandardowe strony pomocy i testowania dla internetowych interfejsów API przy użyciu nowej usługi IApiExplorer , aby uzyskać pełny opis środowiska uruchomieniowego internetowych interfejsów API.
  • Monitorowanie i diagnostyka: ASP.NET internetowy interfejs API udostępnia teraz infrastrukturę śledzenia lekkiej wagi, która ułatwia integrację z istniejącymi rozwiązaniami rejestrowania, takimi jak System.Diagnostics, ETW i platformy rejestrowania innych firm. Śledzenie można włączyć, udostępniając implementację ITraceWriter i dodając ją do konfiguracji internetowego interfejsu API.
  • Generowanie linków: Użyj ASP.NET internetowego interfejsu API UrlHelper , aby wygenerować linki do powiązanych zasobów w tej samej aplikacji.
  • Szablon projektu internetowego interfejsu API: Wybierz nowy projekt internetowego interfejsu API w kreatorze Nowy projekt MVC 4, aby szybko uruchomić aplikację ASP.NET internetowego interfejsu API.
  • Rusztowania: Okno dialogowe Dodawanie kontrolera umożliwia szybkie tworzenie szkieletu internetowego kontrolera interfejsu API na podstawie typu modelu opartego na programie Entity Framework.

Aby uzyskać więcej informacji na temat interfejsu API sieci Web ASP.NET, odwiedź stronę https://www.asp.net/web-api.

Ulepszenia domyślnych szablonów projektów

Szablon używany do tworzenia nowych projektów MVC 4 ASP.NET został zaktualizowany w celu utworzenia bardziej nowoczesnej witryny internetowej:

Zrzut ekranu przedstawiający widok przeglądarki strony nowego szablonu projektu.

Oprócz ulepszeń kosmetycznych wprowadzono ulepszoną funkcjonalność w nowym szablonie. Szablon wykorzystuje technikę o nazwie renderowanie adaptacyjne, aby wyglądało dobrze zarówno w przeglądarkach klasycznych, jak i przeglądarkach mobilnych bez konieczności dostosowywania.

Zrzut ekranu przedstawiający widok przeglądarki mobilnej wersji klasycznej nowej strony szablonu projektu.

Aby zobaczyć renderowanie adaptacyjne w działaniu, możesz użyć emulatora mobilnego lub po prostu spróbować zmienić rozmiar okna przeglądarki klasycznej, aby było mniejsze. Gdy okno przeglądarki zostanie wystarczająco małe, układ strony zmieni się.

Szablon projektu mobilnego

Jeśli rozpoczynasz nowy projekt i chcesz utworzyć witrynę specjalnie dla przeglądarek mobilnych i tabletów, możesz użyć nowego szablonu projektu aplikacji mobilnej. Jest to oparte na aplikacji jQuery Mobile, bibliotece open source do tworzenia interfejsu użytkownika zoptymalizowanego pod kątem dotyku:

Zrzut ekranu przedstawiający widok przeglądarki mobilnej szablonu projektu aplikacji mobilnej.

Ten szablon zawiera taką samą strukturę aplikacji, jak szablon aplikacji internetowej (a kod kontrolera jest praktycznie identyczny), ale stylizowany jest przy użyciu aplikacji jQuery Mobile, aby wyglądać dobrze i zachowywać się dobrze na urządzeniach przenośnych opartych na dotyku. Aby dowiedzieć się więcej o sposobie tworzenia struktury i stylu interfejsu użytkownika mobilnego, zobacz witrynę internetową projektu jQuery Mobile.

Jeśli masz już witrynę zorientowaną na komputery, do której chcesz dodać widoki zoptymalizowane pod kątem urządzeń przenośnych, lub jeśli chcesz utworzyć jedną witrynę, która obsługuje różne widoki w przeglądarkach klasycznych i mobilnych, możesz użyć nowej funkcji Tryby wyświetlania. (Zobacz następną sekcję).

Tryby wyświetlania

Nowa funkcja Tryby wyświetlania umożliwia aplikacji wybieranie widoków w zależności od przeglądarki, która wysyła żądanie. Jeśli na przykład przeglądarka klasyczna żąda strony głównej, aplikacja może używać szablonu Views\Home\Index.cshtml. Jeśli przeglądarka mobilna żąda strony głównej, aplikacja może zwrócić szablon Views\Home\Index.mobile.cshtml.

Układy i części można również zastąpić dla określonych typów przeglądarki. Na przykład:

  • Jeśli folder Views\Shared zawiera zarówno szablony _Layout.cshtml, jak i _Layout.mobile.cshtml, domyślnie aplikacja będzie używać pliku _Layout.mobile.cshtml podczas żądań z przeglądarek mobilnych i pliku _Layout.cshtml podczas innych żądań.
  • Jeśli folder zawiera zarówno plik _MyPartial.cshtml, jak i _MyPartial.mobile.cshtml, instrukcja @Html.Partial("_MyPartial") będzie renderować plik _MyPartial.mobile.cshtml podczas żądań z przeglądarek mobilnych i _MyPartial.cshtml podczas innych żądań.

Jeśli chcesz utworzyć bardziej szczegółowe widoki, układy lub widoki częściowe dla innych urządzeń, możesz zarejestrować nowe wystąpienie DefaultDisplayMode , aby określić nazwę do wyszukania, gdy żądanie spełnia określone warunki. Można na przykład dodać następujący kod do metody Application_Start w pliku Global.asax, aby zarejestrować ciąg "iPhone" jako tryb wyświetlania, który ma zastosowanie, gdy przeglądarka Apple iPhone wysyła żądanie:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

Po uruchomieniu tego kodu, gdy przeglądarka Apple iPhone wyśle żądanie, aplikacja użyje układu Views\Shared\_Layout.iPhone.cshtml (jeśli istnieje). Aby uzyskać więcej informacji na temat trybu wyświetlania, zobacz ASP.NET funkcje mobilne MVC 4. Aplikacje korzystające z metody DisplayModeProvider powinny zainstalować pakiet NuGet Fixed DisplayModes . Aktualizacja ASP.NET Fall 2012 zawiera pakiet NuGet Fixed DisplayModes w nowych szablonach projektu. Aby uzyskać szczegółowe informacje na temat poprawki, zobacz ASP.NET MVC 4 Mobile Caching Bug Fixedd (Usunięto usterkę buforowania mobilnego MVC 4 ).

jQuery Mobile and Mobile Features (Funkcje mobilne i mobilne w usłudze jQuery)

Aby uzyskać informacje na temat tworzenia aplikacji mobilnych za pomocą ASP.NET MVC 4 przy użyciu usługi jQuery Mobile, zobacz samouczek ASP.NET funkcje mobilne MVC 4.

Obsługa zadań dla kontrolerów asynchronicznych

Teraz można napisać metody akcji asynchronicznych jako pojedyncze metody, które zwracają obiekt typu Task lub Task<ActionResult>.

Aby uzyskać więcej informacji, zobacz Using Asynchronous Methods in ASP.NET MVC 4 (Używanie metod asynchronicznych w ASP.NET MVC 4).

Zestaw Azure SDK

ASP.NET MVC 4 obsługuje wersje 1.6 i nowsze zestawu Windows Azure SDK.

Migracje bazy danych

ASP.NET projekty MVC 4 obejmują teraz program Entity Framework 5. Jedną z doskonałych funkcji w programie Entity Framework 5 jest obsługa migracji baz danych. Ta funkcja umożliwia łatwe rozwijanie schematu bazy danych przy użyciu migracji ukierunkowanej na kod przy jednoczesnym zachowaniu danych w bazie danych. Aby uzyskać więcej informacji na temat migracji bazy danych, zobacz Dodawanie nowego pola do modelu filmowego i tabeli w samouczku Wprowadzenie do ASP.NET MVC 4.

Pusty szablon projektu

Szablon projektu MVC Empty jest teraz naprawdę pusty, dzięki czemu można zacząć od całkowicie czystego łupka. Wcześniejsza wersja szablonu pustego projektu została zmieniona na Podstawowa.

Dodawanie kontrolera do dowolnego folderu projektu

Teraz możesz kliknąć prawym przyciskiem myszy i wybrać polecenie Dodaj kontroler z dowolnego folderu w projekcie MVC. Zapewnia to większą elastyczność organizowania kontrolerów, w tym przechowywanie kontrolerów MVC i kontrolerów interfejsu API sieci Web w osobnych folderach.

Tworzenie pakietów i minifikacja

Struktura tworzenia pakietów i minifikacji umożliwia zmniejszenie liczby żądań HTTP, które musi wykonywać strona sieci Web, łącząc poszczególne pliki w jeden, powiązany plik dla skryptów i CSS. Następnie może zmniejszyć ogólny rozmiar tych żądań, minyfikowając zawartość pakietu. Ujednolicanie może obejmować działania, takie jak wyeliminowanie białych znaków w celu skrócenia nazw zmiennych, aby nawet zwijać selektory CSS na podstawie ich semantyki. Pakiety są deklarowane i konfigurowane w kodzie i można do nich łatwo odwoływać się w widokach za pośrednictwem metod pomocnika, które mogą generować pojedyncze łącze do pakietu lub podczas debugowania wiele łączy do pojedynczej zawartości pakietu. Aby uzyskać więcej informacji, zobacz Bundling and Minification (Łączenie i minimalizowanie).

Włączanie logowania z serwisu Facebook i innych witryn przy użyciu protokołu OAuth i OpenID

Szablony domyślne w szablonie internetowego projektu MVC 4 ASP.NET obsługują teraz logowanie OAuth i OpenID przy użyciu biblioteki DotNetOpenAuth. Aby uzyskać informacje na temat konfigurowania dostawcy OAuth lub OpenID, zobacz OAuth/OpenID Support for WebForms, MVC and WebPages (Obsługa OAuth/OpenID dla form WebForms, MVC i WebPages ) oraz dokumentację funkcji OAuth i OpenID w witrynie ASP.NET Web Pages.

Uaktualnianie projektu MVC 3 ASP.NET do ASP.NET MVC 4

ASP.NET MVC 4 można zainstalować obok ASP.NET MVC 3 na tym samym komputerze, co zapewnia elastyczność podczas uaktualniania ASP.NET aplikacji MVC 3 do ASP.NET MVC 4.

Najprostszym sposobem uaktualnienia jest utworzenie nowego projektu ASP.NET MVC 4 i skopiowanie wszystkich widoków, kontrolerów, kodu i plików zawartości z istniejącego projektu MVC 3 do nowego projektu, a następnie zaktualizowanie odwołań do zestawów w nowym projekcie w celu dopasowania ich do wszystkich szablonów innych niż MVC dołączonych do używanych assembiles. Jeśli wprowadzono zmiany w pliku Web.config w projekcie MVC 3, należy również scalić te zmiany w pliku Web.config w projekcie MVC 4.

Aby ręcznie uaktualnić istniejącą aplikację ASP.NET MVC 3 do wersji 4, wykonaj następujące czynności:

  1. We wszystkich plikach Web.config w projekcie (istnieje jeden w katalogu głównym projektu, jeden w folderze Views i jeden w folderze Views dla każdego obszaru projektu), zastąp każde wystąpienie następującego tekstu (uwaga: System.Web.WebPages, Version=1.0.0.0 w projektach utworzonych za pomocą programu 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
    

    z następującym odpowiednim tekstem:

    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. W głównym pliku Web.config zaktualizuj element webPages:Version na "2.0.0.0", a następnie dodaj nowy klucz PreserveLoginUrl o wartości "true":

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy pozycję Odwołania i wybierz polecenie Zarządzaj pakietami NuGet. W okienku po lewej stronie wybierz pozycję Online\NuGet oficjalne źródło pakietu, a następnie zaktualizuj następujące informacje:

    • ASP.NET MVC 4
    • (Opcjonalnie) Interfejs użytkownika jQuery, jQuery Validation i jQuery
    • (Opcjonalnie) Entity Framework
    • (Optonal) Modernizator
  4. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Zwolnij projekt. Następnie ponownie kliknij prawym przyciskiem myszy nazwę i wybierz polecenie Edytuj projectName.csproj.

  5. Znajdź element ProjectTypeGuids i zastąp element {E53F8FEA-EAE0-44A6-8774-FFD645390401} ciągiem {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Zapisz zmiany, zamknij edytowany plik projektu (csproj), kliknij prawym przyciskiem myszy projekt, a następnie wybierz polecenie Załaduj ponownie projekt.

  7. Jeśli projekt odwołuje się do dowolnych bibliotek innych firm kompilowanych przy użyciu poprzednich wersji ASP.NET MVC, otwórz plik Web.config katalogu głównego i dodaj następujące trzy elementy bindingRedirect w sekcji konfiguracji :

    <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>
    

Zmiany z ASP.NET MVC 4 Release Candidate

Informacje o wersji programu ASP.NET MVC 4 Release Candidate można znaleźć tutaj:

Główne zmiany z ASP.NET MVC 4 Release Candidate w tej wersji zostały podsumowane poniżej:

  • Na konfigurację kontrolera: ASP.NET kontrolery internetowego interfejsu API można przypisać za pomocą atrybutu niestandardowego, który implementuje interfejs IControllerConfiguration do konfigurowania własnych elementów formatujących, selektora akcji i powiązań parametrów. Element HttpControllerConfigurationAttribute został usunięty.
  • Programy obsługi komunikatów na trasę: Teraz można określić ostateczną procedurę obsługi komunikatów w łańcuchu żądań dla danej trasy. Dzięki temu można obsługiwać platformy ride-along, aby używać routingu do wysyłania do własnych punktów końcowych (innych niż IHttpController).
  • Powiadomienia o postępie: Program ProgressMessageHandler generuje powiadomienie o postępie dla przekazywanych jednostek żądania i pobierania jednostek odpowiedzi. Korzystając z tej procedury obsługi, można śledzić, jak daleko przekazujesz treść żądania lub pobierasz treść odpowiedzi.
  • Wypychanie zawartości: Klasa PushStreamContent umożliwia scenariusze, w których producent danych chce zapisywać bezpośrednio w żądaniu lub odpowiedzi (synchronicznie lub asynchronicznie) przy użyciu strumienia. Gdy element PushStreamContent jest gotowy do akceptowania danych, wywołuje delegata akcji ze strumieniem wyjściowym. Deweloper może następnie zapisywać dane w strumieniu tak długo, jak to konieczne, i zamykać strumień po zakończeniu pisania. Element PushStreamContent wykrywa zamknięcie strumienia i kończy bazowe zadanie asynchroniczne do zapisywania zawartości.
  • Tworzenie odpowiedzi na błędy: Użyj typu HttpError , aby spójnie reprezentować informacje o błędach, takie jak błędy walidacji i wyjątki, podczas gdy nadal uwzględniane są zasady IncludeErrorDetailPolicy. Użyj nowych metod rozszerzenia CreateErrorResponse , aby łatwo tworzyć odpowiedzi o błędach za pomocą błędu HttpError jako zawartości. Zawartość httpError jest w pełni negocjowana.
  • Usunięto element MediaRangeMapping: Zakresy typów multimediów są teraz obsługiwane przez domyślny negocjator zawartości.
  • Domyślne powiązanie parametrów dla parametrów prostego typu to teraz [FromUri]: W poprzednich wersjach interfejsu API sieci Web ASP.NET domyślne powiązanie parametrów dla parametrów prostego typu używanego powiązania modelu. Domyślne powiązanie parametrów dla parametrów prostego typu to teraz [FromUri].
  • Wybór akcji honoruje wymagane parametry: Wybór akcji w ASP.NET internetowy interfejs API będzie teraz wybierał akcję tylko wtedy, gdy podano wszystkie wymagane parametry pochodzące z identyfikatora URI. Parametr można określić jako opcjonalny, podając wartość domyślną argumentu w podpisie metody akcji.
  • Dostosowywanie powiązań parametrów HTTP: Użyj parametru ParameterBindingAttribute , aby dostosować powiązanie parametru dla określonego parametru akcji lub użyć parametru ParameterBindingRules w działaniu HttpConfiguration , aby szerzej dostosować powiązania parametrów.
  • Ulepszenia mediaTypeFormatter: Osoby formatujące mają teraz dostęp do pełnego wystąpienia httpContent .
  • Wybór zasad buforowania hosta: Zaimplementuj i skonfiguruj usługę IHostBufferPolicySelector w interfejsie API sieci Web ASP.NET, aby umożliwić hostom określanie zasad podczas buforowania.
  • Uzyskiwanie dostępu do certyfikatów klienta w sposób niezależna od hosta: Użyj metody rozszerzenia GetClientCertificate , aby pobrać dostarczony certyfikat klienta z komunikatu żądania.
  • Rozszerzalność negocjacji zawartości: Dostosuj negocjacje zawartości, korzystając z elementu DefaultContentNegotiator i przesłaniając dowolny aspekt negocjacji zawartości.
  • Obsługa zwracania odpowiedzi 406 Nie do przyjęcia: Teraz można zwrócić 406 nie do przyjęcia odpowiedzi w ASP.NET internetowego interfejsu API, gdy odpowiedni formatator nie zostanie znaleziony, tworząc element DefaultContentNegotiator z parametrem excludeMatchOnTypeOnly ustawionym na wartość true.
  • Odczytaj dane formularza jako NameValueCollection lub JToken: Dane formularza można odczytywać w ciągu zapytania identyfikatora URI lub w treści żądania jako element NameValueCollection przy użyciu metod rozszerzeń ParseQueryString i ReadAsFormDataAsync . Podobnie dane formularza można odczytywać w ciągu zapytania identyfikatora URI lub w treści żądania jako token JToken przy użyciu metod rozszerzeń TryReadQueryAsJson i ReadAsAsync<T> .
  • Ulepszenia wieloczęściowe: Teraz można napisać multipartStreamProvider , który jest całkowicie dostosowany do typu danych wieloczęściowych MIME, które mogą odczytywać i prezentować wynik w optymalny sposób dla użytkownika. Możesz również podłączyć krok przetwarzania końcowego na MultipartStreamProvider , który umożliwia implementacji wykonywanie dowolnych czynności po przetworzeniu w częściach treści wieloczęściowych MIME. Na przykład implementacja MultipartFormDataStreamProvider odczytuje części danych formularza HTML i dodaje je do elementu NameValueCollection , aby można je było łatwo uzyskać z obiektu wywołującego.
  • Ulepszenia generowania linków: Element UrlHelper nie zależy już od obiektu HttpControllerContext. Teraz możesz uzyskać dostęp do elementu UrlHelper z dowolnego kontekstu, w którym jest dostępny komunikat HttpRequestMessage .
  • Zmiana kolejności wykonywania programu obsługi komunikatów: Programy obsługi komunikatów są teraz wykonywane w kolejności, w której są skonfigurowane zamiast w odwrotnej kolejności.
  • Pomocnik do podłączania programów obsługi komunikatów: Nowy element HttpClientFactory , który może połączyć delegatingHandlers i utworzyć element HttpClient z żądanym potokiem gotowym do użycia. Zapewnia również funkcjonalność podłączania alternatywnych programów obsługi wewnętrznej (wartość domyślna to HttpClientHandler), a także podłączanie podczas korzystania z httpMessageInvoker lub innego programu DelegatingHandler zamiast HttpClient jako modułu wywołującego najwyższego poziomu.
  • Obsługa sieci CDN w ASP.NET optymalizacji sieci Web: ASP.NET Optymalizacja sieci Web zapewnia teraz obsługę alternatywnych ścieżek sieci CDN, umożliwiając określenie dla każdego pakietu dodatkowego adresu URL wskazującego ten sam zasób w sieci dostarczania zawartości. Obsługa sieci CDN pozwala uzyskać skrypt i pakiety stylów geograficznie bliżej odbiorców końcowych aplikacji internetowych. Aplikacje produkcyjne powinny implementować rezerwę, gdy sieć CDN jest niedostępna. Przetestuj rezerwę.
  • ASP.NET trasy i konfiguracja internetowego interfejsu API zostały przeniesione do metody statycznej WebApiConfig.Register , która może być ponownie stosowana w kodzie testowym. ASP.NET trasy internetowego interfejsu API zostały wcześniej dodane w elemecie RouteConfig.RegisterRoutes wraz ze standardowymi trasami MVC. Domyślne ASP.NET tras i konfiguracji internetowego interfejsu API są teraz obsługiwane w oddzielnej metodzie WebApiConfig.Register w celu ułatwienia testowania.

Znane problemy i zmiany powodujące niezgodność

  • Wersja RC i RTM ASP.NET MVC 4 niepoprawnie zwracane widoki pulpitu w pamięci podręcznej, gdy powinny być zwracane widoki mobilne.

  • Zmiany powodujące niezgodność w a aparatu widoków Razor. Następujące typy zostały usunięte z pliku System.Web.Mvc.Razor:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    Usunięto również następujące metody:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • Gdy WebMatrix.WebData.dll znajduje się w katalogu /bin aplikacji ASP.NET MVC 4, przejmuje adres URL uwierzytelniania formularzy. Dodanie zestawu WebMatrix.WebData.dll do aplikacji (na przykład wybranie pozycji "ASP.NET strony sieci Web ze składnią Razor" w oknie dialogowym Dodawanie zależności możliwych do wdrożenia) spowoduje zastąpienie przekierowania logowania uwierzytelniania do /account/logon, a nie /account/login zgodnie z oczekiwaniami domyślnie ASP.NET kontrolera konta MVC. Aby zapobiec temu zachowaniu i użyć adresu URL określonego już w sekcji uwierzytelniania web.config, możesz dodać aplikacjęSetting o nazwie PreserveLoginUrl i ustawić ją na true:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Nie można zainstalować menedżera pakietów NuGet podczas próby zainstalowania ASP.NET MVC 4 dla instalacji równoległych programów Visual Studio 2010 i Visual Web Developer 2010. Aby uruchomić program Visual Studio 2010 i Visual Web Developer 2010 obok ASP.NET MVC 4, musisz zainstalować ASP.NET MVC 4 po zainstalowaniu obu wersji programu Visual Studio.

  • Odinstalowanie ASP.NET MVC 4 kończy się niepowodzeniem, jeśli zostały już odinstalowane wymagania wstępne. Aby odinstalować ASP.NET MVC 4, należy odinstalować ASP.NET MVC 4 przed odinstalowaniem programu Visual Studio.

  • Instalowanie ASP.NET MVC 4 przerywa działanie ASP.NET aplikacji MVC 3 RTM. ASP.NET aplikacje MVC 3 utworzone przy użyciu wersji RTM (a nie w wersji aktualizacji ASP.NET MVC 3 Tools ) wymagają następujących zmian w celu pracy obok siebie z ASP.NET MVC 4. Kompilowanie projektu bez wprowadzania tych aktualizacji powoduje błędy kompilacji.

    Wymagane aktualizacje

    1. W pliku Web.config katalogu głównego dodaj nowy <wpis appSettings> z kluczem webPages:Version i wartością 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. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy nazwę projektu, a następnie wybierz pozycję Zwolnij projekt. Następnie ponownie kliknij prawym przyciskiem myszy nazwę i wybierz polecenie Edytuj projectName.csproj.

    3. Znajdź następujące odwołania do zestawu:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      Zastąp je następującymi elementami:

      <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. Zapisz zmiany, zamknij edytowany plik projektu (csproj), a następnie kliknij prawym przyciskiem myszy projekt i wybierz pozycję Załaduj ponownie.

  • Zmiana projektu ASP.NET MVC 4 na docelową 4.0 z wersji 4.5 nie aktualizuje odwołania do zestawu EntityFramework: Jeśli zmienisz projekt ASP.NET MVC 4 na docelowy 4.0 po wybraniu wartości docelowej 4.5 odwołanie do zestawu EntityFramework będzie nadal wskazywać wersję 4.5. Aby rozwiązać ten problem, odinstaluj i zainstaluj ponownie pakiet NuGet EntityFramework.

  • 403 Zabronione podczas uruchamiania aplikacji ASP.NET MVC 4 na platformie Azure po zmianie na docelową 4.0 z wersji 4.5: Jeśli zmienisz projekt ASP.NET MVC 4 na docelowy 4.0 po wdrożeniu 4.5, a następnie wdrożysz na platformie Azure, może zostać wyświetlony błąd 403 Zabronione w czasie wykonywania. Aby obejść ten problem, dodaj następujące informacje do web.config: <modules runAllManagedModulesForAllRequests="true" />

  • Program Visual Studio 2012 ulega awarii podczas wpisywania ciągu w literału ciągu w pliku Razor. Aby obejść problem, najpierw wprowadź cudzysłów zamykających literału ciągu.

  • Przejście do pozycji "Konto/zarządzanie" w szablonie internetowym powoduje błąd środowiska uruchomieniowego dla języków CHS, TRK i CHT. Aby rozwiązać ten problem, zmodyfikuj stronę, aby oddzielić znak @User.Identity.Name, umieszczając ją jako jedyną zawartość w silnym> tagu<.

  • Dostawcy Google i LinkedIn nie są obsługiwani w witrynach sieci Web platformy Azure. Użyj alternatywnych dostawców uwierzytelniania podczas wdrażania w witrynach sieci Web platformy Azure.

  • Podczas korzystania z UriPathExtensionMapping z usługami IIS 8 Express/IIS podczas próby użycia rozszerzenia zostanie wyświetlony błąd 404 Nie znaleziono. Program obsługi plików statycznych będzie zakłócać żądania do internetowych interfejsów API korzystających z UriPathExtensionMappings. Ustaw wartość runAllManagedModulesForAllRequests=true w web.config, aby obejść problem.

  • Metoda Controller.Execute nie jest już wywoływana. Wszystkie kontrolery MVC są teraz zawsze wykonywane asynchronicznie.