Freigeben über


ASP.NET MVC 4 Versionshinweise

In diesem Dokument wird die Veröffentlichung von ASP.NET MVC 4 beschrieben.

Installation Notes (SAP-Supporthinweis 1984787 – SUSE Linux Enterprise Server 12: Installationshinweise)

ASP.NET MVC 4 für Visual Studio 2010 kann über die ASP.NET MVC 4-Startseite mithilfe des Webplattform-Installers installiert werden.

Es wird empfohlen, alle zuvor installierten Vorschauen von ASP.NET MVC 4 vor der Installation von ASP.NET MVC 4 zu deinstallieren. Sie können das ASP.NET MVC 4 Beta und Release Candidate auf ASP.NET MVC 4 aktualisieren, ohne sie zu deinstallieren.

Diese Version ist nicht mit Vorschauversionen von .NET Framework 4.5 kompatibel. Sie müssen die installierten Vorschauversionen von .NET Framework 4.5 separat auf die endgültige Version aktualisieren, bevor Sie ASP.NET MVC 4 installieren.

ASP.NET MVC 4 kann parallel mit ASP.NET MVC 3 installiert und ausgeführt werden.

Dokumentation

Dokumentation für ASP.NET MVC ist auf der MSDN-Website unter der folgenden URL verfügbar:

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

Lernprogramme und weitere Informationen zu ASP.NET MVC finden Sie auf der MVC 4-Seite der ASP.NET-Website (https://www.asp.net/mvc/mvc4).

Support

ASP.NET MVC 4 wird vollständig unterstützt. Wenn Sie Fragen zum Arbeiten mit dieser Version haben, können Sie sie auch im ASP.NET MVC-Forum veröffentlichen (https://forums.asp.net/1146.aspx), in dem Mitglieder der ASP.NET Community häufig informelle Unterstützung bieten können.

Softwareanforderungen

Die ASP.NET MVC 4-Komponenten für Visual Studio erfordern PowerShell 2.0 und entweder Visual Studio 2010 mit Service Pack 1 oder Visual Web Developer Express 2010 mit Service Pack 1.

Neue Features in ASP.NET MVC 4

In diesem Abschnitt werden Features beschrieben, die in der version ASP.NET MVC 4 eingeführt wurden.

ASP.NET-Web-API

ASP.NET MVC 4 umfasst ASP.NET Web-API, ein neues Framework zum Erstellen von HTTP-Diensten, die eine breite Palette von Clients einschließlich Browsern und mobilen Geräten erreichen können. ASP.NET Web-API ist auch eine ideale Plattform zum Erstellen von RESTful-Diensten.

ASP.NET Web-API umfasst Unterstützung für die folgenden Features:

  • Modernes HTTP-Programmiermodell: Greifen Sie mithilfe eines neuen stark typierten HTTP-Objektmodells direkt auf HTTP-Anforderungen und -Antworten in Ihren Web-APIs zu und bearbeiten sie. Dasselbe Programmiermodell und die HTTP-Pipeline sind symmetrisch über den neuen HttpClient-Typ auf dem Client verfügbar.
  • Vollständige Unterstützung für Routen: ASP.NET Web-API unterstützt den vollständigen Satz von Routenfunktionen von ASP.NET Routing, einschließlich Routenparametern und Einschränkungen. Verwenden Sie außerdem einfache Konventionen, um Aktionen http-Methoden zuzuordnen.
  • Inhaltsverhandlung: Der Client und der Server können zusammenarbeiten, um das richtige Format für Daten zu ermitteln, die von einer Web-API zurückgegeben werden. ASP.NET Web-API bietet Standardmäßige Unterstützung für XML-, JSON- und Formular-URL-codierte Formate, und Sie können diese Unterstützung erweitern, indem Sie Eigene Formatierer hinzufügen oder sogar die Standardstrategie für inhaltsverhandlung ersetzen.
  • Modellbindung und Validierung: Modellordner bieten eine einfache Möglichkeit, Daten aus verschiedenen Teilen einer HTTP-Anforderung zu extrahieren und diese Nachrichtenteile in .NET-Objekte zu konvertieren, die von den Web-API-Aktionen verwendet werden können. Die Überprüfung wird auch auf Aktionsparameter auf Basis von Datenanmerkungen ausgeführt.
  • Filter: ASP.NET Web-API unterstützt Filter, einschließlich bekannter Filter wie das [Authorize] -Attribut. Sie können eigene Filter für Aktionen, Autorisierung und Ausnahmebehandlung erstellen und anschließen.
  • Abfragekomposition: Verwenden Sie das [Queryable] -Filterattribut für eine Aktion, die IQueryable zurückgibt, um die Unterstützung für die Abfrage Ihrer Web-API über die OData-Abfragekonventionen zu aktivieren.
  • Verbesserte Testbarkeit: Anstatt HTTP-Details in statischen Kontextobjekten festzulegen, funktionieren Web-API-Aktionen mit Instanzen von HttpRequestMessage und HttpResponseMessage. Erstellen Sie ein Komponententestprojekt zusammen mit Ihrem Web-API-Projekt, um schnell Komponententests für Ihre Web-API-Funktionalität zu schreiben.
  • Codebasierte Konfiguration: ASP.NET Web-API-Konfiguration erfolgt ausschließlich über Code, sodass Die Konfigurationsdateien sauber bleiben. Verwenden Sie das bereitgestellte Dienstlocatormuster, um Erweiterbarkeitspunkte zu konfigurieren.
  • Verbesserte Unterstützung für Inversion von Steuerelementcontainern (IoC): ASP.NET Web-API bietet hervorragende Unterstützung für IoC-Container durch eine verbesserte Abstraktion von Abhängigkeitslösern
  • Selbsthost: Web-APIs können zusätzlich zu IIS in Ihrem eigenen Prozess gehostet werden und gleichzeitig die volle Leistungsfähigkeit von Routen und anderen Features der Web-API nutzen.
  • Erstellen von benutzerdefinierten Hilfe- und Testseiten: Sie können jetzt ganz einfach benutzerdefinierte Hilfe- und Testseiten für Ihre Web-APIs erstellen, indem Sie den neuen IApiExplorer-Dienst verwenden, um eine vollständige Laufzeitbeschreibung Ihrer Web-APIs zu erhalten.
  • Überwachung und Diagnose: ASP.NET Web-API bietet jetzt eine einfache Ablaufverfolgungsinfrastruktur, die die Integration in vorhandene Protokollierungslösungen wie System.Diagnostics, ETW und Protokollierungsframeworks von Drittanbietern erleichtert. Sie können die Ablaufverfolgung aktivieren, indem Sie eine ITraceWriter-Implementierung bereitstellen und zur Web-API-Konfiguration hinzufügen.
  • Verknüpfungsgenerierung: Verwenden Sie die ASP.NET Web-API UrlHelper , um Links zu verwandten Ressourcen in derselben Anwendung zu generieren.
  • Web-API-Projektvorlage: Wählen Sie das neue Web-API-Projektformular aus, um schnell mit ASP.NET Web-API zu arbeiten.
  • Gerüst: Verwenden Sie das Dialogfeld " Controller hinzufügen ", um schnell ein Gerüst für einen Web-API-Controller basierend auf einem entitätsframeworkbasierten Modelltyp zu erstellen.

Weitere Informationen zu ASP.NET Web-API finden Sie unter https://www.asp.net/web-api.

Verbesserungen an Standardprojektvorlagen

Die Vorlage, die zum Erstellen neuer ASP.NET MVC 4-Projekte verwendet wird, wurde aktualisiert, um eine modernere Website zu erstellen:

Screenshot der Browseransicht der Neuen Projektvorlagenseite.

Zusätzlich zu kosmetischen Verbesserungen gibt es verbesserte Funktionalität in der neuen Vorlage. Die Vorlage verwendet eine Technik, die als adaptives Rendering bezeichnet wird, um sowohl in Desktopbrowsern als auch in mobilen Browsern ohne Anpassung gut zu aussehen.

Screenshot der Ansicht des mobilen Browsers der Desktopversion der neuen Projektvorlagenseite.

Um adaptives Rendering in Aktion zu sehen, können Sie einen mobilen Emulator verwenden oder einfach versuchen, die Größe des Desktopbrowserfensters zu ändern, um kleiner zu sein. Wenn das Browserfenster klein genug ist, ändert sich das Layout der Seite.

Vorlage für mobiles Projekt

Wenn Sie ein neues Projekt starten und eine Website speziell für mobile und Tablet-Browser erstellen möchten, können Sie die neue Projektvorlage "Mobile Anwendung" verwenden. Dies basiert auf jQuery Mobile, einer Open-Source-Bibliothek zum Erstellen von touchoptimierten UI:This is based on jQuery Mobile, a open-source library for building touch-optimized UI:

Screenshot der Ansicht des mobilen Browsers der Projektvorlage für mobile Anwendungen.

Diese Vorlage enthält dieselbe Anwendungsstruktur wie die Internetanwendungsvorlage (und der Controllercode ist praktisch identisch), aber sie wird mit jQuery Mobile formatiert, um gut zu aussehen und sich auf mobilen Geräten mit Toucheingabe gut zu verhalten. Weitere Informationen zum Strukturieren und Formatieren der mobilen Benutzeroberfläche finden Sie auf der jQuery Mobile-Projektwebsite.

Wenn Sie bereits über eine desktoporientierte Website verfügen, der Sie mobile optimierte Ansichten hinzufügen möchten, oder wenn Sie eine einzelne Website erstellen möchten, die für Desktop- und mobile Browser unterschiedlich formatierte Ansichten bereitstellt, können Sie das neue Feature "Anzeigemodi" verwenden. (Weitere Informationen finden Sie im nächsten Abschnitt.)

Anzeigemodi

Mit dem neuen Feature "Anzeigemodi" kann eine Anwendung ansichten je nach Browser auswählen, der die Anforderung vornimmt. Wenn beispielsweise ein Desktopbrowser die Startseite anfordert, kann die Anwendung die Vorlage "Views\Home\Index.cshtml" verwenden. Wenn ein mobiler Browser die Startseite anfordert, gibt die Anwendung möglicherweise die Vorlage "Views\Home\Index.mobile.cshtml" zurück.

Layouts und Partien können auch für bestimmte Browsertypen überschrieben werden. Beispiel:

  • Wenn Ihr Ordner "Views\Shared" sowohl die Vorlagen _Layout.cshtml als auch _Layout.mobile.cshtml enthält, verwendet die Anwendung standardmäßig _Layout.mobile.cshtml bei Anforderungen von mobilen Browsern und _Layout.cshtml während anderer Anforderungen.
  • Wenn ein Ordner sowohl _MyPartial.cshtml als auch _MyPartial.mobile.cshtml enthält, rendert die Anweisung @Html.Partial("_MyPartial" _MyPartial.mobile.cshtml während Anforderungen von mobilen Browsern und _MyPartial.cshtml während anderer Anforderungen.

Wenn Sie spezifischere Ansichten, Layouts oder Teilansichten für andere Geräte erstellen möchten, können Sie eine neue DefaultDisplayMode-Instanz registrieren, um anzugeben, nach welchem Namen gesucht werden soll, wenn eine Anforderung bestimmte Bedingungen erfüllt. Sie können beispielsweise der Application_Start-Methode in der Datei "Global.asax" den folgenden Code hinzufügen, um die Zeichenfolge "iPhone" als Anzeigemodus zu registrieren, der angewendet wird, wenn der Apple iPhone-Browser eine Anforderung sendet:

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

Nachdem dieser Code ausgeführt wird, verwendet Ihre Anwendung, wenn ein Apple iPhone-Browser eine Anforderung vorgibt, das Layout "Views\Shared\_Layout.iPhone.cshtml" (sofern vorhanden). Weitere Informationen zum Anzeigemodus finden Sie unter ASP.NET MVC 4 Mobile-Features. Anwendungen, die DisplayModeProvider verwenden, sollten das Fixed DisplayModes NuGet-Paket installieren. Das ASP.NET Fall 2012 Update enthält das Fixed DisplayModes NuGet-Paket in den neuen Projektvorlagen. Details zum Fix finden Sie unter ASP.NET MVC 4 Mobile Caching Bug Fixedd .

jQuery Mobile und Mobilfunktionen

Informationen zum Erstellen mobiler Anwendungen mit ASP.NET MVC 4 mit jQuery Mobile finden Sie im Lernprogramm ASP.NET MVC 4 Mobile-Features.

Aufgabenunterstützung für asynchrone Controller

Sie können jetzt asynchrone Aktionsmethoden als einzelne Methoden schreiben, die ein Objekt vom Typ "Task " oder "Task<ActionResult>" zurückgeben.

Weitere Informationen finden Sie unter Verwenden asynchroner Methoden in ASP.NET MVC 4.

Azure SDK

ASP.NET MVC 4 unterstützt die Versionen 1.6 und neuere Versionen des Windows Azure SDK.

Datenbankmigrationen

ASP.NET MVC 4-Projekte umfassen jetzt Entity Framework 5. Eine der großartigen Features in Entity Framework 5 ist die Unterstützung für Datenbankmigrationen. Mit diesem Feature können Sie Ihr Datenbankschema mithilfe einer codeorientierten Migration problemlos weiterentwickeln und gleichzeitig die Daten in der Datenbank beibehalten. Weitere Informationen zu Datenbankmigrationen finden Sie unter Hinzufügen eines neuen Felds zum Filmmodell und zur Tabelle im Lernprogramm "Einführung in ASP.NET MVC 4".

Leere Projektvorlage

Die Projekt-Template "MVC Empty" ist jetzt tatsächlich komplett leer, sodass Sie von einem völlig sauberen Ausgangspunkt beginnen können. Die frühere Version der Projektvorlage "Leer" wurde in "Basic" umbenannt.

Hinzufügen des Controllers zu einem beliebigen Projektordner

Sie können jetzt mit der rechten Maustaste klicken und " Controller hinzufügen" aus einem beliebigen Ordner in Ihrem MVC-Projekt auswählen. Dies bietet Ihnen mehr Flexibilität, um Ihre Controller nach Bedarf zu organisieren, einschließlich der Beibehaltung Ihrer MVC- und Web-API-Controller in separaten Ordnern.

Bündelung und Minimierung

Mit dem Bündelungs- und Minimierungsframework können Sie die Anzahl der HTTP-Anforderungen verringern, die eine Webseite vornehmen muss, indem Sie einzelne Dateien in einer einzigen gebündelten Datei für Skripts und CSS kombinieren. Anschließend kann die Gesamtgröße dieser Anforderungen reduziert werden, indem der Inhalt des Bündels verringert wird. Die Minimierung kann Aktivitäten umfassen, z. B. das Entfernen von Leerzeichen, das Kürzen von Variablennamen und sogar das Zusammenführen von CSS-Selektoren basierend auf ihrer Semantik. Bündel werden im Code deklariert und konfiguriert und können einfach über Hilfsmethoden in Ansichten referenziert werden, die entweder einen einzelnen Link zum Bundle generieren können, oder beim Debuggen mehrere Links zu den einzelnen Inhalten des Bundles. Weitere Informationen finden Sie unter "Bundling and Minification".

Aktivieren von Anmeldungen von Facebook und anderen Websites mithilfe von OAuth und OpenID

Die Standardvorlagen in ASP.NET MVC 4 Internet Project-Vorlage enthalten jetzt Unterstützung für die OAuth- und OpenID-Anmeldung mithilfe der DotNetOpenAuth-Bibliothek. Informationen zum Konfigurieren eines OAuth- oder OpenID-Anbieters finden Sie unter OAuth/OpenID-Unterstützung für WebForms, MVC und WebPages sowie die OAuth- und OpenID-Featuredokumentation in ASP.NET Webseiten.

Aktualisieren eines ASP.NET MVC 3-Projekts auf ASP.NET MVC 4

ASP.NET MVC 4 kann parallel mit ASP.NET MVC 3 auf demselben Computer installiert werden, wodurch Sie flexibel entscheiden können, wann eine ASP.NET MVC 3-Anwendung auf ASP.NET MVC 4 aktualisiert werden soll.

Die einfachste Möglichkeit zum Upgrade besteht darin, ein neues ASP.NET MVC 4-Projekt zu erstellen und alle Ansichten, Controller, Code und Inhaltsdateien aus dem vorhandenen MVC 3-Projekt in das neue Projekt zu kopieren und dann die Assemblyverweise im neuen Projekt so zu aktualisieren, dass sie mit allen Nicht-MVC-Vorlagen übereinstimmen, die Sie verwenden. Wenn Sie Änderungen an der Web.config Datei im MVC 3-Projekt vorgenommen haben, müssen Sie diese Änderungen auch in der Web.config Datei im MVC 4-Projekt zusammenführen.

Gehen Sie wie folgt vor, um eine vorhandene ASP.NET MVC 3-Anwendung manuell auf Version 4 zu aktualisieren:

  1. Ersetzen Sie in allen Web.config Dateien im Projekt (im Stammverzeichnis des Projekts, eines im Ordner "Ansichten" und eines im Ordner "Ansichten" für jeden Bereich in Ihrem Projekt) jede Instanz des folgenden Texts (Hinweis: System.Web.WebPages, Version=1.0.0.0, wird in Projekten, die mit Visual Studio 2012 erstellt wurden, nicht gefunden):

    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
    

    mit dem folgenden entsprechenden Text:

    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. Aktualisieren Sie in der Stammdatei Web.config das WebPages:Version-Element auf "2.0.0.0", und fügen Sie einen neuen PreserveLoginUrl-Schlüssel hinzu, der den Wert "true" aufweist:

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Verweise, und wählen Sie "NuGet-Pakete verwalten" aus. Wählen Sie im linken Bereich die offizielle Paketquelle "Online\NuGet" aus, und aktualisieren Sie dann Folgendes:

    • ASP.NET MVC 4
    • (Optional) jQuery, jQuery Validation und jQuery UI
    • (Optional) Entity Framework
    • (Optional) Modernizr
  4. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann "Projekt entladen" aus. Klicken Sie dann erneut mit der rechten Maustaste auf den Namen, und wählen Sie "ProjectName.csproj bearbeiten" aus.

  5. Suchen Sie das ProjectTypeGuids-Element , und ersetzen Sie {E53F8FEA-EAE0-44A6-8774-FFD645390401} durch {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Speichern Sie die Änderungen, schließen Sie die Projektdatei (CSPROJ), die Sie bearbeitet haben, klicken Sie mit der rechten Maustaste auf das Projekt, und wählen Sie dann "Projekt erneut laden" aus.

  7. Wenn das Projekt auf Bibliotheken von Drittanbietern verweist, die mit früheren Versionen von ASP.NET MVC kompiliert werden, öffnen Sie die Stammdatei Web.config Datei, und fügen Sie die folgenden drei bindingRedirect-Elemente unter dem Konfigurationsabschnitt hinzu:

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

Änderungen von ASP.NET MVC 4 Release Candidate

Die Versionshinweise für ASP.NET MVC 4 Release Candidate finden Sie hier:

Die wichtigsten Änderungen von ASP.NET MVC 4 Release Candidate in dieser Version sind unten zusammengefasst:

  • Pro Controllerkonfiguration: ASP.NET Web-API-Controller können einem benutzerdefinierten Attribut zugeordnet werden, das IControllerConfiguration implementiert, um eigene Formatierer, Aktionsauswahl und Parameterordner einzurichten. HttpControllerConfigurationAttribute wurde entfernt.
  • Pro Routennachrichtenhandler: Sie können nun den endgültigen Nachrichtenhandler in der Anforderungskette für eine bestimmte Route angeben. Dies ermöglicht die Unterstützung von Ride-Along-Frameworks, um Routing für die Verteilung an ihre eigenen (nicht-IHttpController)-Endpunkte zu verwenden.
  • Statusbenachrichtigungen: Der ProgressMessageHandler generiert Statusbenachrichtigungen für anforderungsentitäten, die hochgeladen werden, und Antwortentitäten, die heruntergeladen werden. Mithilfe dieses Handlers können Sie nachverfolgen, wie weit Sie einen Anforderungstext hochladen oder einen Antworttext herunterladen.
  • Pushinhalt: Die PushStreamContent-Klasse ermöglicht Szenarien, in denen ein Datenproduzent mithilfe eines Datenstroms direkt in die Anforderung oder Antwort schreiben möchte(entweder synchron oder asynchron). Wenn der PushStreamContent bereit ist, Daten zu akzeptieren, ruft er einen Aktionsdelegat mit dem Ausgabedatenstrom auf. Der Entwickler kann dann so lange wie nötig in den Stream schreiben und den Datenstrom schließen, wenn das Schreiben abgeschlossen ist. Der PushStreamContent erkennt das Schließen des Streams und komplettiert die zugrunde liegende asynchrone Aufgabe zum Schreiben des Inhalts.
  • Erstellen von Fehlerantworten: Verwenden Sie den HttpError-Typ , um Fehlerinformationen konsistent darzustellen, z. B. Überprüfungsfehler und Ausnahmen, während die IncludeErrorDetailPolicy berücksichtigt wird. Verwenden Sie die neuen CreateErrorResponse-Erweiterungsmethoden , um Fehlerantworten mit HttpError als Inhalt auf einfache Weise zu erstellen. Der HttpError-Inhalt ist vollständig ausgehandelter Inhalt.
  • MediaRangeMapping wurde entfernt: Medientypbereiche werden jetzt vom Standardmäßigen Inhaltsverhandler behandelt.
  • Die Standardparameterbindung für einfache Typparameter lautet jetzt [FromUri]: In früheren Versionen der ASP.NET Web-API wurde die Modellbindung für die Standardparameterbindung verwendet. Die Standardparameterbindung für einfache Typparameter lautet jetzt [FromUri].
  • Die Aktionsauswahl berücksichtigt erforderliche Parameter: Die Aktionsauswahl in ASP.NET Web-API wählt jetzt nur eine Aktion aus, wenn alle erforderlichen Parameter, die aus dem URI stammen, bereitgestellt werden. Ein Parameter kann als optional angegeben werden, indem ein Standardwert für das Argument in der Aktionsmethodensignatur angegeben wird.
  • Anpassen von HTTP-Parameterbindungen: Verwenden Sie ParameterBindingAttribute , um die Parameterbindung für einen bestimmten Aktionsparameter anzupassen, oder verwenden Sie parameterBindingRules auf der HttpConfiguration , um Parameterbindungen umfassender anzupassen.
  • MediaTypeFormatter-Verbesserungen: Formatierer haben jetzt Zugriff auf die vollständige HttpContent-Instanz .
  • Auswahl der Hostpufferrichtlinie: Implementieren und konfigurieren Sie den IHostBufferPolicySelector-Dienst in ASP.NET Web-API, um Hosts zu ermöglichen, die Richtlinie für die Verwendung von Puffern zu bestimmen.
  • Zugriff auf Clientzertifikate in host-agnostischer Weise: Verwenden Sie die GetClientCertificate-Erweiterungsmethode, um das bereitgestellte Clientzertifikat aus der Anforderungsnachricht abzurufen.
  • Erweiterbarkeit von Inhaltsverhandlungen: Passen Sie die Inhaltsverhandlung an, indem Sie vom DefaultContentNegotiator abgeleitet werden und alle Aspekte der Inhaltsverhandlung außer Kraft setzen, die Sie wünschen.
  • Unterstützung für die Rückgabe von 406 nicht zulässigen Antworten: Sie können jetzt 406 Nicht akzeptable Antworten in ASP.NET Web-API zurückgeben, wenn ein geeigneter Formatierer nicht gefunden wird, indem Sie einen DefaultContentNegotiator mit dem excludeMatchOnTypeOnly-Parameter auf "true" festlegen.
  • Lesen von Formulardaten als NameValueCollection oder JToken: Sie können Formulardaten in der URI-Abfragezeichenfolge oder im Anforderungstext als NameValueCollection lesen, indem Sie die Erweiterungsmethoden ParseQueryString bzw. ReadAsFormDataAsync verwenden. Ebenso können Sie Formulardaten in der URI-Abfrage oder im Nachrichtentext als JToken mit den Erweiterungsmethoden TryReadQueryAsJson und ReadAsAsync<T> lesen.
  • Mehrteilige Verbesserungen: Es ist jetzt möglich, einen MultipartStreamProvider zu schreiben, der vollständig auf den Typ von MIME-mehrteiligen Daten zugeschnitten ist, die es lesen und das Ergebnis auf optimale Weise für den Benutzer darstellen kann. Sie können auch einen Nachverarbeitungsschritt an den MultipartStreamProvider anhängen, der der Implementierung ermöglicht, beliebige Nachbearbeitungen an den MIME-Multipart-Teilen durchzuführen. Beispielsweise liest die MultipartFormDataStreamProvider-Implementierung die HTML-Formulardatenteile und fügt sie einer NameValueCollection hinzu, damit sie einfach vom Aufrufer abgerufen werden können.
  • Verbesserungen bei der Verknüpfungsgenerierung: Die UrlHelper hängt nicht mehr von HttpControllerContext ab. Sie können jetzt über jeden Kontext, in dem die HttpRequestMessage verfügbar ist, auf die UrlHelper zugreifen.
  • Änderung der Ausführungsreihenfolge des Nachrichtenhandlers: Nachrichtenhandler werden jetzt in der Reihenfolge ausgeführt, in der sie anstelle in umgekehrter Reihenfolge konfiguriert sind.
  • Hilfe beim Einrichten von Nachrichtenhandlern: Die neue HttpClientFactory, die DelegatingHandlers verbinden und einen HttpClient mit der gewünschten Pipeline einsatzbereit erstellen kann. Es bietet außerdem Funktionen für die Verkabelung mit alternativen inneren Handlern (der Standardwert ist HttpClientHandler) sowie die Verkabelung bei Verwendung von HttpMessageInvoker oder einem anderen DelegatingHandler anstelle von HttpClient als top-invoker.
  • Unterstützung für CDNs in ASP.NET Weboptimierung: ASP.NET Weboptimierung bietet jetzt Unterstützung für alternative CDN-Pfade, mit denen Sie für jedes Bundle eine zusätzliche URL angeben können, die auf dieselbe Ressource in einem Inhaltsübermittlungsnetzwerk verweist. Die Unterstützung von CDNs ermöglicht es Ihnen, Ihre Skript- und Stilpakete geografisch näher an die Endbenutzer Ihrer Webanwendungen zu bringen. Produktions-Apps sollten einen Fallback implementieren, wenn das CDN nicht verfügbar ist. Testen Sie den Fallback.
  • ASP.NET Web-API-Routen und -Konfigurationen werden in die statische WebApiConfig.Register-Methode verschoben, die im Testcode erneut verwendet werden kann. ASP.NET Web-API-Routen wurden zuvor zusammen mit den Standard-MVC-Routen in RouteConfig.RegisterRoutes hinzugefügt. Die standardmäßigen ASP.NET Web-API-Routen und -Konfigurationen werden jetzt in einer separaten WebApiConfig.Register-Methode behandelt, um das Testen zu erleichtern.

Bekannte Probleme und wichtige Änderungen

  • Die RC- und RTM-Version von ASP.NET MVC 4 hat falsch zwischengespeicherte Desktopansichten zurückgegeben, wenn mobile Ansichten zurückgegeben werden sollen.

  • Kompatibilitätsbrechende Änderungen im Razor View Engine. Die folgenden Typen wurden aus System.Web.Mvc.Razor entfernt:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    Die folgenden Methoden wurden ebenfalls entfernt:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • Wenn WebMatrix.WebData.dll im Verzeichnis "/bin" einer ASP.NET MVC 4-Apps enthalten ist, übernimmt sie die URL für die Formularauthentifizierung. Wenn Sie die WebMatrix.WebData.dll Assembly zu Ihrer Anwendung hinzufügen (z. B. indem Sie "ASP.NET Webseiten mit Razor-Syntax" auswählen, wenn Sie das Dialogfeld "Bereitstellende Abhängigkeiten hinzufügen" verwenden), wird die Authentifizierungsanmeldungsumleitung auf /account/logon anstelle von /account/login außer Kraft setzen, wie es standardmäßig ASP.NET MVC-Kontocontroller erwartet wird. Um dieses Verhalten zu verhindern und die url zu verwenden, die bereits im Authentifizierungsbereich von web.configangegeben ist, können Sie ein appSetting namens PreserveLoginUrl hinzufügen und auf "true" festlegen:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Der NuGet-Paket-Manager kann nicht installiert werden, wenn versucht wird, ASP.NET MVC 4 für parallele Installationen von Visual Studio 2010 und Visual Web Developer 2010 zu installieren. Um Visual Studio 2010 und Visual Web Developer 2010 parallel mit ASP.NET MVC 4 auszuführen, müssen Sie ASP.NET MVC 4 installieren, nachdem beide Versionen von Visual Studio bereits installiert wurden.

  • Das Deinstallieren ASP.NET MVC 4 schlägt fehl, wenn die erforderlichen Komponenten bereits deinstalliert wurden. Um ASP.NET MVC 4 sauber zu deinstallieren, muss ASP.NET MVC 4 vor der Deinstallation von Visual Studio entfernt werden.

  • Beim Installieren von ASP.NET MVC 4 werden ASP.NET MVC 3 RTM-Anwendungen beschädigt. ASP.NET MVC 3-Anwendungen, die mit der RTM-Version erstellt wurden (nicht mit der ASP.NET MVC 3 Tools Update-Version ), erfordern die folgenden Änderungen, um parallel mit ASP.NET MVC 4 zu arbeiten. Das Erstellen des Projekts, ohne diese Aktualisierungen vorzunehmen, führt zu Kompilierungsfehlern.

    Erforderliche Updates

    1. Fügen Sie in der Stammdatei Web.config datei einen neuen <appSettings-Eintrag> mit dem Schlüssel "webPages:Version " und dem Wert 1.0.0.0 hinzu.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektnamen, und wählen Sie dann "Projekt entladen" aus. Klicken Sie dann erneut mit der rechten Maustaste auf den Namen, und wählen Sie "ProjectName.csproj bearbeiten" aus.

    3. Suchen Sie die folgenden Assemblyverweise:

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

      Ersetzen Sie sie durch Folgendes:

      <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. Speichern Sie die Änderungen, schließen Sie die Projektdatei (CSPROJ), die Sie bearbeitet haben, und klicken Sie dann mit der rechten Maustaste auf das Projekt, und wählen Sie "Neu laden" aus.

  • Durch das Ändern eines ASP.NET MVC 4-Projekts auf 4.0 von 4.5 wird der EntityFramework-Assemblyverweis nicht aktualisiert: Wenn Sie ein ASP.NET MVC 4-Projekt auf 4.0 festlegen, nachdem Sie 4.5 als Ziel angegeben haben, verweist der Verweis auf die EntityFramework-Assembly weiterhin auf die Version 4.5. Um dieses Problem zu beheben, deinstallieren Sie das EntityFramework NuGet-Paket, und installieren Sie es erneut.

  • 403 Verboten beim Ausführen einer ASP.NET MVC 4-Anwendung in Azure nach dem Wechsel zu Ziel 4.0 von 4.5: Wenn Sie ein ASP.NET MVC 4-Projekt nach dem Ziel 4.0 ändern und dann in Azure bereitstellen, wird zur Laufzeit möglicherweise ein Fehler "403 Verboten" angezeigt. Um dieses Problem zu umgehen, fügen Sie Ihrem web.configFolgendes hinzu: <modules runAllManagedModulesForAllRequests="true" />

  • Visual Studio 2012 stürzt ab, wenn Sie ein '' in ein Zeichenfolgenliteral in einer Razor-Datei eingeben. Um das Problem zu umgehen, geben Sie zuerst das schließende Anführungszeichen des Zeichenfolgenliterals ein.

  • Das Browsen zu "Account/Manage" in der Internetvorlage führt zu einem Laufzeitfehler für CHS-, TRK- und CHT-Sprachen. Um das Problem zu beheben, ändern Sie die Seite so, dass Sie @User.Identity.Name trennen, indem Sie es als einzigen Inhalt im <strong>-Tag platzieren.

  • Google- und LinkedIn-Anbieter werden in Azure-Websites nicht unterstützt. Verwenden Sie alternative Authentifizierungsanbieter beim Bereitstellen auf Azure-Websites.

  • Wenn Sie UriPathExtensionMapping mit IIS 8 Express/IIS verwenden, erhalten Sie 404 Nicht gefundene Fehler, wenn Sie versuchen, die Erweiterung zu verwenden. Der statische Dateihandler stört Anforderungen an Web-APIs, die UriPathExtensionMappings verwenden. Legen Sie "runAllManagedModulesForAllRequests=true " in web.config fest, um das Problem zu umgehen.

  • Die Controller.Execute-Methode wird nicht mehr aufgerufen. Alle MVC-Controller werden jetzt immer asynchron ausgeführt.