Versionsanmerkungen zu ASP.NET MVC 4

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

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 Vorschauversionen von ASP.NET MVC 4 vor der Installation ASP.NET MVC 4 zu deinstallieren. Sie können die ASP.NET MVC 4 Beta and Release Candidate auf ASP.NET MVC 4 aktualisieren, ohne zu deinstallieren.

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

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

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

Tutorials und andere 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 zur Arbeit mit diesem Release haben, können Sie diese auch im ASP.NET MVC-Forum (https://forums.asp.net/1146.aspx) posten, in dem Mitglieder der ASP.NET Community häufig informelle Unterstützung leisten 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, das eine vielzahl von Clients erreichen kann, einschließlich Browsern und mobilen Geräten. ASP.NET-Web-API ist auch eine ideale Plattform für die Erstellung von RESTful-Diensten.

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

  • Modernes HTTP-Programmiermodell: Greifen Sie mithilfe eines neuen, stark typisierten HTTP-Objektmodells direkt auf HTTP-Anforderungen und -Antworten in Ihren Web-APIs zu und bearbeiten Sie sie. Dasselbe Programmiermodell und dieselbe HTTP-Pipeline sind auf dem Client über den neuen HttpClient-Typ symmetrisch 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: Client und Server können zusammenarbeiten, um das richtige Format für daten zu bestimmen, die von einer Web-API zurückgegeben werden. ASP.NET-Web-API bietet Standardunterstützung für XML-, JSON- und Formular-URL-codierte Formate, und Sie können diese Unterstützung erweitern, indem Sie Ihre eigenen Formatierungsprogramme hinzufügen oder sogar die Standardstrategie für inhaltsverhandlung ersetzen.
  • Modellbindung und -validierung: Modellbinder 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 für Aktionsparameter basierend auf Datenanmerkungen durchgefü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 einbinden.
  • Abfragekomposition: Verwenden Sie das Filterattribute [Queryable] 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 mit dem Schreiben von Komponententests für Ihre Web-API-Funktionalität zu beginnen.
  • Codebasierte Konfiguration: ASP.NET-Web-API Konfiguration erfolgt ausschließlich über Code, sodass Ihre Konfigurationsdateien sauber. Verwenden Sie das bereitgestellte Dienstlocatormuster, um Erweiterbarkeitspunkte zu konfigurieren.
  • Verbesserte Unterstützung für IoC-Container (Inversion of Control): ASP.NET-Web-API bietet hervorragende Unterstützung für IoC-Container durch eine verbesserte Abstraktion von Abhängigkeitslöser
  • 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 Sie benutzerdefinierte 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 sie Ihrer Web-API-Konfiguration hinzufügen.
  • Linkgenerierung: 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-Projekt aus dem Neuen MVC 4-Projekt-Assistenten aus, um schnell mit ASP.NET-Web-API zu starten.
  • Gerüst: Verwenden Sie das Dialogfeld Controller hinzufügen , um schnell einen Web-API-Controller basierend auf einem Entity Framework-basierten 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 Funktionen in der neuen Vorlage. Die Vorlage verwendet eine Technik namens adaptives Rendering, um sowohl in Desktopbrowsern als auch in mobilen Browsern ohne Anpassung gut auszusehen.

Screenshot: 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 auf eine kleinere Größe zu ändern. Wenn das Browserfenster klein genug wird, ändert sich das Layout der Seite.

Vorlage für mobile Projekte

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 einer touchoptimierten Benutzeroberfläche:

Screenshot der Mobilen Browseransicht der Projektvorlage für mobile Anwendungen

Diese Vorlage enthält dieselbe Anwendungsstruktur wie die Internetanwendungsvorlage (und der Controllercode ist praktisch identisch), aber sie wird mithilfe von jQuery Mobile formatiert, um auf touchbasierten mobilen Geräten gut auszusehen und sich 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 Desktop-orientierte Website verfügen, der Sie für mobilgeräte optimierte Ansichten hinzufügen möchten, oder wenn Sie eine einzelne Website erstellen möchten, die unterschiedlich formatierte Ansichten für Desktop- und mobile Browser bereitstellt, können Sie das neue Feature Anzeigemodi verwenden. (Siehe nächster Abschnitt.)

Anzeigemodi

Mit dem neuen Feature Anzeigemodi kann eine Anwendung Ansichten je nach Browser auswählen, der die Anforderung stellt. Wenn beispielsweise ein Desktopbrowser die Startseite anfordert, verwendet die Anwendung möglicherweise die Vorlage Views\Home\Index.cshtml. 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 bei anderen Anforderungen.
  • Wenn ein Ordner sowohl _MyPartial.cshtml als auch _MyPartial.mobile.cshtml enthält, rendert die Anweisung @Html.Partial("_MyPartial") _MyPartial.mobile.cshtml bei Anforderungen von mobilen Browsern und _MyPartial.cshtml bei anderen Anforderungen.

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

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

Wenn dieser Code ausgeführt wird, verwendet Ihre Anwendung 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. Weitere Informationen zum Problembehebung finden Sie unter ASP.NET MVC 4 Mobile Caching-Fehler behoben .

jQuery Mobile und Mobile Features

Informationen zum Erstellen mobiler Anwendungen mit ASP.NET MVC 4 mit jQuery Mobile finden Sie im Tutorial 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 höher des Windows Azure SDK.

Datenbankmigrationen

ASP.NET MVC 4-Projekte umfassen jetzt Entity Framework 5. Eines 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 der Tabelle im Tutorial Einführung in ASP.NET MVC 4.

Leere Projektvorlage

Die MVC Empty-Projektvorlage ist jetzt wirklich leer, sodass Sie mit einer vollständig sauber Schiefer 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 beim Organisieren Ihrer Controller nach Ihren Wünschen, einschließlich der Beibehaltung Ihrer MVC- und Web-API-Controller in separaten Ordnern.

Bündelung und Minimierung

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

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

Die Standardvorlagen in ASP.NET MVC 4 Internet Project-Vorlage umfassen jetzt Unterstützung für OAuth- und OpenID-Anmeldungen 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 in der OAuth- und OpenID-Featuredokumentation in ASP.NET Web Pages.

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

ASP.NET MVC 4 kann parallel zu ASP.NET MVC 3 auf demselben Computer installiert werden, sodass 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 allen von Ihnen verwendeten Nicht-MVC-Vorlagen entsprechen. 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 (eine im Stammverzeichnis des Projekts, eine im Ordner Ansichten und eine im Ordner Ansichten für jeden Bereich in Ihrem Projekt), jeden instance 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 mit dem Wert "true" hinzu:

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

    • ASP.NET MVC 4
    • (Optional) jQuery, jQuery Validation und jQuery UI
    • (Optional) Entity Framework
    • (Optonal) Modernizr
  4. Klicken Sie in 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 neu laden aus.

  7. Wenn das Projekt auf Bibliotheken von Drittanbietern verweist, die mit früheren Versionen von ASP.NET MVC kompiliert wurden, öffnen Sie die Stammdatei Web.config, und fügen Sie im Konfigurationsabschnitt die folgenden drei bindingRedirect-Elemente 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 gegenüber 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 Controllern können mit einem benutzerdefinierten Attribut zugeordnet werden, das IControllerConfiguration implementiert, um ihre eigenen Formatierer, Aktionsauswahl und Parameterbinder einzurichten. Das HttpControllerConfigurationAttribute wurde entfernt.
  • Nachrichtenhandler pro Route: Sie können nun den endgültigen Nachrichtenhandler in der Anforderungskette für eine bestimmte Route angeben. Dadurch können Mitfahrframeworks das Routing verwenden, um an ihre eigenen Endpunkte (nicht IHttpController) zu senden.
  • Statusbenachrichtigungen:Der ProgressMessageHandler generiert Statusbenachrichtigungen sowohl für hochgeladene Anforderungsentitäten als auch für die heruntergeladenen Antwortentitäten. Mit diesem Handler 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 PushStreamContent bereit ist, Daten zu akzeptieren, ruft es einen Aktionsdelegat mit dem Ausgabestream auf. Der Entwickler kann dann so lange wie erforderlich in den Stream schreiben und den Stream schließen, wenn das Schreiben abgeschlossen ist. PushStreamContent erkennt das Schließen des Datenstroms und schließt den zugrunde liegenden asynchronen Task zum Schreiben des Inhalts ab.
  • Erstellen von Fehlerantworten: Verwenden Sie den HttpError-Typ , um Fehlerinformationen wie Validierungsfehler und Ausnahmen konsistent darzustellen, während sie weiterhin die IncludeErrorDetailPolicy berücksichtigen. Verwenden Sie die neuen CreateErrorResponse-Erweiterungsmethoden , um problemlos Fehlerantworten mit HttpError als Inhalt zu erstellen. Der HttpError-Inhalt ist vollständig ausgehandelter Inhalt.
  • MediaRangeMapping entfernt: Medientypbereiche werden jetzt vom Standardinhaltsverhandler behandelt.
  • Die Standardparameterbindung für einfache Typparameter ist jetzt [FromUri]: In früheren Versionen von ASP.NET-Web-API die Standardparameterbindung für einfache Typparameter verwendet Modellbindung. Die Standardparameterbindung für Einfache Typparameter ist jetzt [FromUri].
  • Erforderliche Parameter für die Aktionsauswahl: Die Aktionsauswahl in ASP.NET-Web-API wählt nun nur dann eine Aktion aus, wenn alle erforderlichen Parameter aus dem URI bereitgestellt werden. Ein Parameter kann 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 allgemeiner anzupassen.
  • MediaTypeFormatter-Verbesserungen: Formatierer haben jetzt Zugriff auf die vollständige HttpContent-instance.
  • Auswahl der Hostpufferrichtlinie: Implementieren und konfigurieren Sie den IHostBufferPolicySelector-Dienst in ASP.NET-Web-API, damit Hosts die Richtlinie für die Verwendung des Puffers bestimmen können.
  • Zugreifen auf Clientzertifikate auf hostunabhängige Weise: Verwenden Sie die Erweiterungsmethode GetClientCertificate , um das angegebene Clientzertifikat aus der Anforderungsnachricht abzurufen.
  • Erweiterbarkeit der Inhaltsaushandlung: Passen Sie die Inhaltsverhandlung an, indem Sie vom DefaultContentNegotiator ableiten und alle gewünschten Aspekte der Inhaltsverhandlung außer Kraft setzen.
  • Unterstützung für die Rückgabe von 406 nicht akzeptablen Antworten: Sie können jetzt 406 Nicht akzeptable Antworten in ASP.NET-Web-API zurückgeben, wenn kein geeigneter Formatierer gefunden wird, indem Sie einen DefaultContentNegotiator erstellen, der den parameter excludeMatchOnTypeOnly auf true festgelegt hat.
  • Lesen Sie Formulardaten als NameValueCollection oder JToken: Sie können Formulardaten in der URI-Abfragezeichenfolge oder im Anforderungstext als NameValueCollection mit den Erweiterungsmethoden ParseQueryString bzw . ReadAsFormDataAsync lesen. Ebenso können Sie Formulardaten in der URI-Abfragezeichenfolge oder im Anforderungstext als JToken mit den Erweiterungsmethoden TryReadQueryAsJson bzw . ReadAsAsync<T> lesen.
  • Mehrteilige Verbesserungen: Es ist jetzt möglich, einen MultipartStreamProvider zu schreiben, der vollständig auf den Typ der mehrteiligen MIME-Daten zugeschnitten ist, die er lesen und das Ergebnis optimal für den Benutzer darstellen kann. Sie können auch einen Nachverarbeitungsschritt im MultipartStreamProvider einbinden, der es der Implementierung ermöglicht, die gewünschte Nachverarbeitung auf den mehrteiligen MIME-Textteilen durchzuführen. Beispielsweise liest die MultipartFormDataStreamProvider-Implementierung die HTML-Formulardatenteile und fügt sie einer NameValueCollection hinzu, sodass sie vom Aufrufer einfach abgerufen werden können.
  • Verbesserungen bei der Linkgenerierung:UrlHelper ist nicht mehr von HttpControllerContext abhängig. Sie können jetzt von jedem Kontext aus auf urlHelper zugreifen, in dem httpRequestMessage verfügbar ist.
  • Änderung der Ausführungsreihenfolge des Nachrichtenhandlers: Nachrichtenhandler werden jetzt in der Reihenfolge ausgeführt, in der sie konfiguriert sind, anstatt in umgekehrter Reihenfolge.
  • Hilfsprogramm für die Verdrahtung von Nachrichtenhandlern: Die neue HttpClientFactory , die DelegatingHandlers verkabeln und einen HttpClient mit der gewünschten Pipeline erstellen kann. Es bietet auch Funktionen für die Verdrahtung mit alternativen inneren Handlern (der Standardwert ist HttpClientHandler) sowie die Verdrahtung, wenn HttpMessageInvoker oder ein anderer DelegatingHandler anstelle von HttpClient als Oberster Aufrufer verwendet wird.
  • Unterstützung für CDNs in ASP.NET Weboptimierung: ASP.NET Weboptimierung bietet jetzt Unterstützung für alternative CDN-Pfade, sodass Sie für jedes Paket 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 Formatpakete 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 das Fallback.
  • ASP.NET-Web-API Routen und Konfiguration zur statischen Methode WebApiConfig.Register verschoben, die im Testcode erneut verwendet werden kann. ASP.NET-Web-API Routen wurden zuvor in RouteConfig.RegisterRoutes zusammen mit den MVC-Standardrouten hinzugefügt. Die Standard ASP.NET-Web-API Routen und Konfiguration werden jetzt in einer separaten WebApiConfig.Register-Methode verarbeitet, um tests zu erleichtern.

Bekannte Probleme und wichtige Änderungen

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

  • Breaking changes in the 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 er die URL für die Formularauthentifizierung. Durch das Hinzufügen der WebMatrix.WebData.dll Assembly zu Ihrer Anwendung (z. B. durch Auswählen von "ASP.NET Web Pages mit Razor-Syntax" bei Verwendung des Dialogfelds "Deployable Dependencies hinzufügen") wird die Umleitung der Authentifizierungsanmeldung zu /account/logon überschrieben, anstatt /account/login, wie vom Standard-ASP.NET MVC-Kontocontrollers erwartet. Um dieses Verhalten zu verhindern und die url zu verwenden, die bereits im Abschnitt "Authentifizierung" von web.config angegeben wurde, können Sie eine AppSetting mit dem Namen 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.

  • Bei der Deinstallation ASP.NET MVC 4 tritt ein Fehler auf, wenn die Voraussetzungen bereits deinstalliert wurden. Um ASP.NET MVC 4 sauber zu deinstallieren, müssen Sie vor der Deinstallation von Visual Studio ASP.NET MVC 4 deinstallieren.

  • Die Installation ASP.NET MVC 4 unterbricht ASP.NET MVC 3 RTM-Anwendungen. ASP.NET MVC 3-Anwendungen, die mit dem RTM-Release erstellt wurden (nicht mit dem update-Release ASP.NET MVC 3 Tools ), sind die folgenden Änderungen erforderlich, um parallel mit ASP.NET MVC 4 zu arbeiten. Das Erstellen des Projekts ohne diese Updates führt zu Kompilierungsfehlern.

    Erforderliche Updates

    1. Fügen Sie in der Stammdatei Web.config 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 in 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 Projektname.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, klicken Sie dann mit der rechten Maustaste auf das Projekt, und wählen Sie Neu laden aus.

  • Wenn Sie ein ASP.NET MVC 4-Projekt von 4.5 auf 4.0 als Ziel ändern, wird der EntityFramework-Assemblyverweis nicht aktualisiert: Wenn Sie ein ASP.NET MVC 4-Projekt nach der Zielversion 4.5 in 4.0 ändern, verweist der Verweis auf die EntityFramework-Assembly weiterhin auf version 4.5. Deinstallieren Sie das EntityFramework NuGet-Paket, und installieren Sie es erneut, um dieses Problem zu beheben.

  • 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 der Zielversion 4.5 in 4.0 ändern und dann in Azure bereitstellen, wird zur Laufzeit möglicherweise der Fehler 403 Verboten angezeigt. Um dieses Problem zu umgehen, fügen Sie Ihrem web.config Folgendes hinzu: <modules runAllManagedModulesForAllRequests="true" />

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

  • Das Navigieren zu "Konto/Verwalten" 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 @User.Identity.Name getrennt wird, indem Sie sie als einzigen Inhalt innerhalb des <strong-Tags> einfügen.

  • Google- und LinkedIn-Anbieter werden innerhalb von Azure-Websites nicht unterstützt. Verwenden Sie bei der Bereitstellung auf Azure-Websites alternative Authentifizierungsanbieter.

  • Wenn Sie UriPathExtensionMapping mit IIS 8 Express/IIS verwenden, erhalten Sie 404 Not Found-Fehler, wenn Sie versuchen, die Erweiterung zu verwenden. Der Handler für statische Dateien beeinträchtigt 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.