ASP.NET and Web Tools für Visual Studio 2013 – Anmerkungen zu dieser VersionASP.NET and Web Tools for Visual Studio 2013 Release Notes

by Microsoftby Microsoft

Dieses Dokument beschreibt die Version von ASP.NET und Webtools für Visual Studio 2013.This document describes the release of ASP.NET and Web Tools for Visual Studio 2013.

InhaltContents

Neue Features in ASP.NET und Webtools für Visual Studio 2013New Features in ASP.NET and Web Tools for Visual Studio 2013

InstallationshinweiseInstallation Notes

ASP.NET and Web Tools für Visual Studio 2013 werden in der main-Installationsprogramm gebündelt und können heruntergeladen werden hier.ASP.NET and Web Tools for Visual Studio 2013 are bundled in the main installer and can be downloaded here.

DokumentationDocumentation

Lernprogramme und Weitere Informationen zu ASP.NET und Webtools für Visual Studio 2013 stehen über die ASP.NET-Website.Tutorials and other information about ASP.NET and Web Tools for Visual Studio 2013 are available from the ASP.NET web site.

SoftwareanforderungenSoftware Requirements

ASP.NET and Web Tools erfordert Visual Studio 2013.ASP.NET and Web Tools requires Visual Studio 2013.

Neue Features in ASP.NET und Webtools für Visual Studio 2013New Features in ASP.NET and Web Tools for Visual Studio 2013

Die folgenden Abschnitte beschreiben die Funktionen, die in der Version eingeführt wurden.The following sections describe the features that have been introduced in the release.

One ASP.NETOne ASP.NET

Mit der Veröffentlichung von Visual Studio 2013 haben wir einen Schritt in Richtung vereinheitlichen die Verwendung von ASP.NET-Technologien, damit Sie leicht kombinieren und identisch mit der gewünschten ergriffen.With the release of Visual Studio 2013, we have taken a step towards unifying the experience of using ASP.NET technologies, so that you can easily mix and match the ones you want. Beispielsweise können Sie starten Sie ein Projekt mithilfe von MVC und einfach Web Forms-Seiten für das Projekt später hinzufügen, oder Erstellen des Gerüsts für Web-APIs in einem Web Forms-Projekt.For example, you can start a project using MVC and easily add Web Forms pages to the project later, or scaffold Web APIs in a Web Forms project. Eine ASP.NET geht es einfacher für Sie als Entwickler, die Dinge zu tun, die Sie in ASP.NET gibt, lieben.One ASP.NET is all about making it easier for you as a developer to do the things you love in ASP.NET. Unabhängig davon, welche Technologie Sie wählen, können Sie die Gewissheit verfügen, die Sie in der vertrauenswürdigen zugrunde liegende Framework von One ASP.NET erstellen.No matter what technology you choose, you can have confidence that you are building on the trusted underlying framework of One ASP.NET.

Neue Project-WeboberflächeNew Web Project Experience

Wir haben die Erfahrung mit der Erstellung neuer Webprojekte in Visual Studio 2013 verbessert.We have enhanced the experience of creating new web projects in Visual Studio 2013. In der neuen ASP.NET-Webprojekts Dialogfeld können Sie den Projekttyp, Sie möchten, konfigurieren eine beliebige Kombination aus Technologien (Web Forms, MVC, Web-API), konfigurieren Sie Authentifizierungsoptionen und hinzufügen ein Komponententestprojekts, auswählen.In the New ASP.NET Web Project dialog you can select the project type you want, configure any combination of technologies (Web Forms, MVC, Web API), configure authentication options, and add a unit test project.

Neues ASP.NET-Projekt

Der neue Dialog können Sie die standardmäßigen Authentifizierungsoptionen für viele der Vorlagen zu ändern.The new dialog enables you to change the default authentication options for many of the templates. Z. B. beim Erstellen einer ASP.NET Web Forms-Projekts können Sie eine der folgenden Optionen auswählen:For example, when you create an ASP.NET Web Forms project you can select any of the following options:

  • Keine AuthentifizierungNo Authentication
  • Einzelne Benutzerkonten (ASP.NET-Mitgliedschaft oder Anbieter sozialer-Anmeldung)Individual User Accounts (ASP.NET membership or social provider log in)
  • Organisations-Konten (Active Directory in einer internetanwendung)Organizational Accounts (Active Directory in an internet application)
  • Windows-Authentifizierung (Active Directory in einer Intranetanwendung)Windows Authentication (Active Directory in an intranet application)

Authentifizierungsoptionen

Weitere Informationen zu den neuen Prozess für das Erstellen von Webprojekten, finden Sie unter Erstellen von ASP.NET-Webprojekten in Visual Studio 2013.For more information about the new process for creating web projects, see Creating ASP.NET Web Projects in Visual Studio 2013. Weitere Informationen zu den neuen Authentifizierungsoptionen finden Sie unter ASP.NET Identity weiter unten in diesem Dokument.For more information about the new authentication options, see ASP.NET Identity later in this document.

ASP.NET-GerüstbauASP.NET Scaffolding

ASP.NET-Gerüstbau ist ein Code-Generierung-Framework für Webanwendungen mit ASP.NET.ASP.NET Scaffolding is a code generation framework for ASP.NET Web applications. Es erleichtert die Codebausteine zu Ihrem Projekt hinzufügen, die mit einem Datenmodell interagiert.It makes it easy to add boilerplate code to your project that interacts with a data model.

In früheren Versionen von Visual Studio konnte Gerüstbau ASP.NET MVC-Projekte.In previous versions of Visual Studio, scaffolding was limited to ASP.NET MVC projects. Mit Visual Studio 2013 können Sie jetzt Gerüstbau für ASP.NET Projekte, einschließlich Web Forms.With Visual Studio 2013, you can now use scaffolding for any ASP.NET project, including Web Forms. Visual Studio 2013 unterstützt derzeit keine Generieren von Seiten für eine Web Forms-Projekt, aber Sie können weiterhin Gerüstbau mit Web Forms verwenden, durch das Hinzufügen von MVC-Abhängigkeiten auf das Projekt.Visual Studio 2013 does not currently support generating pages for a Web Forms project, but you can still use scaffolding with Web Forms by adding MVC dependencies to the project. Unterstützung für das Generieren von Seiten für Web Forms wird in einem späteren Update hinzugefügt werden.Support for generating pages for Web Forms will be added in a future update.

Wenn Gerüstbau verwenden zu können, stellen wir sicher, dass alle erforderlichen Abhängigkeiten im Projekt installiert sind.When using scaffolding, we ensure that all required dependencies are installed in the project. Z. B. Wenn Sie mit einem ASP.NET Web Forms-Projekt beginnen, und klicken Sie dann mithilfe von Gerüstbau einer Web-API-Controller hinzu, werden die erforderlichen NuGet-Pakete und Verweise dem Projekt automatisch hinzugefügt.For example, if you start with an ASP.NET Web Forms project and then use scaffolding to add a Web API Controller, the required NuGet packages and references are added to your project automatically.

MVC-Gerüstbau um eine Web Forms-Projekt hinzuzufügen, fügen einen neues Gerüstelement , und wählen Sie MVC 5-Abhängigkeiten im Dialogfenster.To add MVC scaffolding to a Web Forms project, add a New Scaffolded Item and select MVC 5 Dependencies in the dialog window. Es gibt zwei Optionen für den Gerüstbau für MVC. Minimaler und vollständiger.There are two options for scaffolding MVC; Minimal and Full. Wenn Sie die minimale auswählen, werden nur die NuGet-Pakete und Verweise für ASP.NET MVC zu Ihrem Projekt hinzugefügt.If you select Minimal, only the NuGet packages and references for ASP.NET MVC are added to your project. Bei Auswahl der Option "vollständig", die mindestens erforderliche Abhängigkeiten hinzugefügt werden, sowie die erforderlichen Inhaltsdateien für ein MVC-Projekt.If you select the Full option, the Minimal dependencies are added, as well as the required content files for an MVC project.

Unterstützung für den Gerüstbau für Async-Controller verwendet, die neuen asynchronen Features von Entity Framework 6.Support for scaffolding async controllers uses the new async features from Entity Framework 6.

Weitere Informationen und Lernprogramme finden Sie unter Gerüstbau-Übersicht über ASP.NET.For more information and tutorials, see ASP.NET Scaffolding Overview.

Die neue Browserlink -Funktion können Sie das Verbinden von mehreren Browsern mit Visual Studio, und aktualisieren sie alle durch Klicken auf eine Schaltfläche auf der Symbolleiste.The new Browser Link feature lets you connect multiple browsers to Visual Studio and refresh them all by clicking a button in the toolbar. Sie können Verbinden von mehreren Browsern mit Ihrer Entwicklungswebsite, einschließlich der mobilen Emulatoren aus, und klicken Sie auf aktualisieren, aktualisieren Sie alle zur gleichen Zeit alle Browser.You can connect multiple browsers to your development site, including mobile emulators, and click refresh to refresh all the browsers all at the same time. Browserverknüpfung macht auch eine API zum ermöglichen Entwicklern das Schreiben von Browser Link-Erweiterungen von verfügbar.Browser Link also exposes an API to enable developers to write Browser Link extensions.

Durch die ermöglicht es Entwicklern, die die Browserlink-API nutzen, wird es möglich, Erstellen von sehr komplexen Szenarien, die über mehrere zwischen Visual Studio und einem beliebigen Browser, der verbunden ist.By enabling developers to take advantage of the Browser Link API, it becomes possible to create very advanced scenarios that crosses boundaries between Visual Studio and any browser that's connected. Web Essentials nutzt die Vorteile der API um eine integrierte Erfahrung zwischen Visual Studio und im Browser auf die Entwicklertools, remote steuern des mobilen Emulatoren und vieles mehr zu erstellen.Web Essentials takes advantage of the API to create an integrated experience between Visual Studio and the browser's developer tools, remote controlling mobile emulators and a lot more.

Visual Studio Web-Editor-ErweiterungenVisual Studio Web Editor Enhancements

Visual Studio 2013 enthält einen neuen HTML-Editor für den Razor-Dateien und HTML-Dateien in Webanwendungen.Visual Studio 2013 includes a new HTML editor for Razor files and HTML files in web applications. Der neue HTML-Editor bietet ein einzelnes einheitliches Schema auf Grundlage von HTML5.The new HTML editor provides a single unified schema based on HTML5. Es bietet automatische Vervollständigung von Klammern, jQuery-Benutzeroberfläche und AngularJS-Attribut von IntelliSense, Attribut IntelliSense Gruppierung, ID und Klassennamen Intellisense und andere Verbesserungen, die z. B. eine bessere Leistung, Formatierung und SmartTags.It has automatic brace completion, jQuery UI and AngularJS attribute IntelliSense, attribute IntelliSense Grouping, ID and class name Intellisense, and other improvements including better performance, formatting and SmartTags.

Der folgende Screenshot zeigt mithilfe von Bootstrap Attribut IntelliSense in der HTML-Editor.The following screenshot demonstrates using Bootstrap attribute IntelliSense in the HTML editor.

IntelliSense in HTML-editor

Visual Studio 2013 enthält auch mit beiden CoffeeScript und LESS-Editor integriert.Visual Studio 2013 also comes with both CoffeeScript and LESS editors built in. LESS-Editor enthält alle interessanten Features von CSS-Editor, und verfügt über bestimmte Intellisense für Variablen und Mixins in alle weniger Dokumente in der @import Kette.The LESS editor comes with all the cool features from the CSS editor and has specific Intellisense for variables and mixins across all the LESS documents in the @import chain.

Azure App Service-Web-Apps-Unterstützung in Visual StudioAzure App Service Web Apps Support in Visual Studio

In Visual Studio 2013 mit dem Azure SDK für .NET 2.2 können Sie Server-Explorer direkt mit die remote-Web-apps interagieren.In Visual Studio 2013 with the Azure SDK for .NET 2.2, you can use Server Explorer to interact directly with your remote web apps. Sie melden Sie sich bei Ihrem Azure-Konto, Erstellen neuer Web-apps, apps konfigurieren, echtzeitprotokolle und vieles mehr anzeigen.You can sign in to your Azure account, create new web apps, configure apps, view real-time logs, and more. Feedback nach SDK 2.2 veröffentlicht wird, Sie werden in den Debugmodus Remote in Azure ausführen können.Coming soon after SDK 2.2 is released, you'll be able to run in debug mode remotely in Azure. Die meisten neuen Features von Azure App Service-Web-Apps funktionieren auch in Visual Studio 2012, wenn Sie die aktuelle Version des Azure SDK für .NET installieren.Most of the new features for Azure App Service Web Apps also work in Visual Studio 2012 when you install the current release of the Azure SDK for .NET.

Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

Webveröffentlichung mit ErweiterungenWeb Publish Enhancements

Visual Studio 2013 enthält neue und verbesserte Web Publish-Funktionen.Visual Studio 2013 includes new and enhanced Web Publish features. Hier sind einige davon:Here are a few of them:

Weitere Informationen zur Bereitstellung von ASP.NET finden Sie unter der ASP.NET-Website.For more information about ASP.NET web deployment, see the ASP.NET site.

NuGet 2.7NuGet 2.7

NuGet 2.7 umfasst einen umfangreichen Satz von neuen Features, die beschrieben werden, im Detail Anmerkungen zu NuGet 2.7.NuGet 2.7 includes a rich set of new features which are described in detail at NuGet 2.7 Release Notes.

Diese Version von NuGet wird auch die Notwendigkeit, bieten explizite Zustimmung für das Feature für die Wiederherstellung von NuGet Paket zum Herunterladen von Paketen entfernt.This version of NuGet also removes the need to provide explicit consent for NuGet's package restore feature to download packages. Zustimmung (und die zugehörigen Kontrollkästchen im NuGet Dialogfeld "Einstellungen") werden jetzt durch Installieren von NuGet gewährt.Consent (and the associated checkbox in NuGet's preferences dialog) is now granted by installing NuGet. Wiederherstellen von Paketen funktioniert nun einfach in der Standardeinstellung.Now package restore simply works by default.

ASP.NET-Web FormsASP.NET Web Forms

One ASP.NETOne ASP.NET

Die Web Forms-Projektvorlagen nahtlose Integration in die neue Oberfläche für die One ASP.NET.The Web Forms project templates integrate seamlessly with the new One ASP.NET experience. Sie können hinzufügen, MVC und Web-API unterstützen, dem Web Forms-Projekt, und Sie können die Authentifizierung mithilfe von One ASP.NET projekterstellungs-Assistenten konfigurieren.You can add MVC and Web API support to your Web Forms project, and you can configure authentication using the One ASP.NET project creation wizard. Weitere Informationen finden Sie unter Erstellen von ASP.NET-Webprojekten in Visual Studio 2013.For more information, see Creating ASP.NET Web Projects in Visual Studio 2013.

ASP.NET IdentityASP.NET Identity

Die Web Forms-Projektvorlagen unterstützen das neue ASP.NET Identity-Framework.The Web Forms project templates support the new ASP.NET Identity framework. Darüber hinaus unterstützen die Vorlagen jetzt Erstellung eines Web Forms-Intranet-Projekts.In addition, the templates now support creation of a Web Forms intranet project. Weitere Informationen finden Sie unter Authentifizierungsmethoden in Erstellen von ASP.NET-Webprojekten in Visual Studio 2013.For more information, see Authentication Methods in Creating ASP.NET Web Projects in Visual Studio 2013.

Bootstrap-StilBootstrap

Verwenden Sie die Web Forms-Vorlagen Bootstrap , ein schlankes und reaktionsfähige Aussehen und Verhalten bereitzustellen, die Sie problemlos anpassen können.The Web Forms templates use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. Weitere Informationen finden Sie unter Bootstrap in den Visual Studio 2013-Web-Projektvorlagen.For more information, see Bootstrap in the Visual Studio 2013 web project templates.

ASP.NET MVC 5ASP.NET MVC 5

One ASP.NETOne ASP.NET

Die Web-MVC-Projektvorlagen nahtlose Integration in die neue Oberfläche für die One ASP.NET.The Web MVC project templates integrate seamlessly with the new One ASP.NET experience. Sie können Ihre MVC-Projekt anpassen und Konfigurieren von Authentifizierung unter Verwendung von One ASP.NET projekterstellungs-Assistenten.You can customize your MVC project and configure authentication using the One ASP.NET project creation wizard. Ein einführendes Lernprogramm zu ASP.NET MVC 5 finden Sie unter erste Schritte mit ASP.NET MVC 5.An introductory tutorial to ASP.NET MVC 5 can be found at Getting Started with ASP.NET MVC 5.

Informationen zum Upgrade von MVC 4-Projekte auf MVC 5 finden Sie unter das Upgrade von einer ASP.NET MVC 4 und Web-API-Projekt auf ASP.NET MVC 5 und Web-API 2.For information on upgrading MVC 4 projects to MVC 5, see How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2.

ASP.NET IdentityASP.NET Identity

Die MVC-Projektvorlagen wurden aktualisiert, um ASP.NET Identity für Authentifizierung und identitätsverwaltung verwenden.The MVC project templates have been updated to use ASP.NET Identity for authentication and identity management. Ein Tutorial mit Facebook und Google-Authentifizierung und der neuen Mitgliedschafts-API finden Sie unter erstellen Sie eine ASP.NET MVC 5-App mit Facebook und Google OAuth2 und OpenID-Sign-on und Erstellen einer ASP.NET MVC-app mit Authentifizierung und SQL-Datenbank und in Azure App Service bereitstellen.A tutorial featuring Facebook and Google authentication and the new membership API can be found at Create an ASP.NET MVC 5 App with Facebook and Google OAuth2 and OpenID Sign-on and Create an ASP.NET MVC app with auth and SQL DB and deploy to Azure App Service.

Bootstrap-StilBootstrap

MVC-Projektvorlage wurde aktualisiert, um verwenden Bootstrap , ein schlankes und reaktionsfähige Aussehen und Verhalten bereitzustellen, die Sie problemlos anpassen können.The MVC project template has been updated to use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. Weitere Informationen finden Sie unter Bootstrap in den Visual Studio 2013-Web-Projektvorlagen.For more information, see Bootstrap in the Visual Studio 2013 web project templates.

AuthentifizierungsfilterAuthentication filters

Authentifizierungsfilter sind eine neue Art von Filter in ASP.NET MVC, die vor dem Autorisierungsfilter werden also in der ASP.NET MVC-Pipeline ausgeführt und ermöglichen es Ihnen, geben Sie die Authentifizierung Logik pro-Aktion, pro Controller oder global für alle Controller.Authentication filters are a new kind of filter in ASP.NET MVC that run prior to authorization filters in the ASP.NET MVC pipeline and allow you to specify authentication logic per-action, per-controller, or globally for all controllers. Authentifizierungsfilter Anmeldeinformationen in der Anforderung zu verarbeiten, und geben einen entsprechenden Prinzipal.Authentication filters process credentials in the request and provide a corresponding principal. Authentifizierungsfilter können authentifizierungsanforderungen auch als Reaktion auf nicht autorisierte Anforderungen hinzufügen.Authentication filters can also add authentication challenges in response to unauthorized requests.

ÜberschreibungsfilterFilter overrides

Sie können jetzt überschreiben, die Filter auf eine bestimmte Aktionsmethode bzw. einen Controller angewendet werden, durch Angabe eines Filters außer Kraft setzen.You can now override which filters apply to a given action method or controller by specifying an override filter. Überschreibungsfilter Geben Sie einen Satz von Filtertypen, die für einen bestimmten Bereich (Aktions- oder Controllerebene) nicht ausgeführt werden soll.Override filters specify a set of filter types that should not be run for a given scope (action or controller). Dadurch können Sie so konfigurieren Sie Filter, die global angewendet, aber dann bestimmte globale Filter ausschließen, nicht auf bestimmte Aktionen oder Controller angewendet.This allows you to configure filters that apply globally but then exclude certain global filters from applying to specific actions or controllers.

AttributroutingAttribute routing

ASP.NET MVC unterstützt jetzt das attributrouting, Dank der einen Beitrag von Tim McCall der Autor des http://attributerouting.net .ASP.NET MVC now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. Das attributrouting können Sie Ihre Routen angeben, durch das Hinzufügen von Anmerkungen zu Ihren Aktionen und Controllern.With attribute routing you can specify your routes by annotating your actions and controllers.

ASP.NET-Web-API 2ASP.NET Web API 2

AttributroutingAttribute routing

ASP.NET Web-API unterstützt jetzt das attributrouting, Dank der einen Beitrag von Tim McCall der Autor des http://attributerouting.net .ASP.NET Web API now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. Das attributrouting können Sie Ihre Web-API-Routen angeben, durch das Hinzufügen von Anmerkungen zu Ihren Aktionen und Controllern wie folgt:With attribute routing you can specify your Web API routes by annotating your actions and controllers like this:

[RoutePrefix("orders")] 
public class OrdersController : ApiController 
{ 
    [Route("{id}")] 
    public Order Get(int id) { } 
    [Route("{id}/approve")] 
    public Order Approve(int id) { } 
}

Attribut-routing bietet Ihnen mehr Kontrolle über die URIs in Ihrer Web-API.Attribute routing gives you more control over the URIs in your web API. Beispielsweise können Sie ganz einfach über einen einzelnen API-Controller Ressourcenhierarchie definieren:For example, you can easily define a resource hierarchy using a single API controller:

public class MoviesController : ApiController 
{ 
    [Route("movies")] 
    public IEnumerable<Movie> Get() { } 
    [Route("actors/{actorId}/movies")] 
    public IEnumerable<Movie> GetByActor(int actorId) { } 
    [Route("directors/{directorId}/movies")] 
    public IEnumerable<Movie> GetByDirector(int directorId) { } 
}

Attributrouting auch bietet eine praktische Syntax zum Angeben Optionaler Parameter, Standardwerte und Einschränkungen:Attribute routing also provides a convenient syntax for specifying optional parameters, default values, and route constraints:

// Optional parameter
[Route("people/{name?}")]
// Default value
[Route("people/{name=Dan}")]
// Constraint: Alphabetic characters only. 
[Route("people/{name:alpha}")]

Weitere Informationen zu Attribut-routing, finden Sie unter Attributrouting in der Web-API 2.For more information about attribute routing, see Attribute Routing in Web API 2.

OAuth 2.0OAuth 2.0

Die Web-API und Single Page Application-Projektvorlagen unterstützen nun mithilfe von OAuth 2.0 Autorisierung.The Web API and Single Page Application project templates now support authorization using OAuth 2.0. OAuth 2.0 ist ein Framework für die Autorisierung des Clientzugriff auf geschützte Ressourcen.OAuth 2.0 is a framework for authorizing client access to protected resources. Dies funktioniert für eine Vielzahl von Clients einschließlich Browsern und mobilen Geräten.It works for a variety of clients including browsers and mobile devices.

Unterstützung für OAuth 2.0 basiert auf neuen sicherheitsmiddleware von den Microsoft-OWIN-Komponenten für Bearer-Authentifizierung bereitgestellt werden, und implementieren die Serverrolle für die Autorisierung.Support for OAuth 2.0 is based on new security middleware provided by the Microsoft OWIN Components for bearer authentication and implementing the authorization server role. Alternativ können die Clients mit einem organisationsbezogenen autorisierungsserver, z. B. Azure Active Directory oder AD FS in Windows Server 2012 R2 autorisiert werden.Alternatively, clients can be authorized using an organizational authorization server, such as Azure Active Directory or ADFS in Windows Server 2012 R2.

OData-VerbesserungenOData Improvements

Unterstützung für $select, $ $batch und $value erweiternSupport for $select, $expand, $batch, and $value

ASP.NET Web API OData bietet jetzt vollständige Unterstützung für $select, $expand, und $value.ASP.NET Web API OData now has full support for $select, $expand, and $value. Sie können auch für die Anforderung, Batchverarbeitung und Verarbeitung von Changesets $batch verwenden.You can also use $batch for request batching and processing of change sets.

Der $select und $expand-Optionen können Sie ändern die Form der Daten, die von einem OData-Endpunkt zurückgegeben werden.The $select and $expand options let you change the shape of the data that is returned from an OData endpoint. Weitere Informationen finden Sie unter Einführung in $select und $expand-Unterstützung in Web-API OData.For more information, see Introducing $select and $expand support in Web API OData.

Verbesserte ErweiterbarkeitImproved extensibility

Die OData-Formatierer können jetzt erweitert werden.The OData formatters are now extensible. Sie können Atom-Eintrag-Metadaten hinzufügen, benannte Streams und Medien-Link-Einträge unterstützt, instanzanmerkungen hinzufügen und anpassen, wie Links generiert werden.You can add Atom entry metadata, support named stream and media link entries, add instance annotations, and customize how links are generated.

Typ-kleiner-UnterstützungType-less support

Sie können nun die OData-Dienste erstellen, ohne zu CLR-Typen für die Entitätstypen definieren müssen.You can now build OData services without needing to define CLR types for your entity types. Stattdessen können die OData-Controller nutzen oder Zurückgeben der Instanzen von IEdmObject, werden die OData-Formatierer serialisieren/deserialisieren.Instead, your OData controllers can take or return instances of IEdmObject, which are the OData formatters serialize/deserialize.

Wiederverwenden eines vorhandenen ModellsReuse an existing model

Wenn Sie bereits über ein vorhandenes Entitätsdatenmodell (EDM) verfügen, können Sie jetzt es direkt wiederverwenden anstatt eine neue Ressourcengruppe zu erstellen.If you already have an existing entity data model (EDM), you can now reuse it directly, instead of having to build a new one. Z. B. Wenn Sie Entity Framework verwenden, können das EDM Sie, die EF für Sie erstellt.For example, if you are using Entity Framework, you can use the EDM that EF builds for you.

Anfordern der BatchverarbeitungRequest Batching

Anforderung Batchverarbeitung kombiniert mehrere Vorgänge in eine einzelne HTTP POST-Anforderung, um den Netzwerkverkehr verringern, und geben Sie eine glattere, weniger ' geschwätzige '-Benutzeroberfläche.Request batching combines multiple operations into a single HTTP POST request, to reduce network traffic and provide a smoother, less chatty user interface. ASP.NET Web-API unterstützt nun verschiedene Strategien für die Batchverarbeitung der Anforderung:ASP.NET Web API now supports several strategies for request batching:

  • Verwenden Sie den $batch-Endpunkt von einem OData-Dienst.Use the $batch endpoint of an OData service.
  • Verpacken Sie mehrere Anforderungen in einer einzelnen MIME-multipart-Anforderung.Package multiple requests into a single MIME multipart request.
  • Verwenden Sie ein benutzerdefiniertes Format für die Batchverarbeitungs.Use a custom batching format.

Um Anforderung, die Batchverarbeitung zu aktivieren, müssen fügen Sie eine Route mit einem Batchverarbeitung Handler einfach Ihrer Web-API-Konfiguration hinzu:To enable request batching, simply add a route with a batching handler to your Web API configuration:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
        config.Routes.MapHttpBatchRoute( 
            routeName: "WebApiBatch", 
            routeTemplate: "api/batch", 
            batchHandler: new DefaultHttpBatchHandler(GlobalConfiguration.DefaultServer)); 
    } 
}

Sie können auch steuern, ob Anforderungen oder ausgeführt werden, sequenziell oder in einer beliebigen Reihenfolge.You can also control whether requests or executed sequentially or in any order.

Portable ASP.NET Web-API-ClientPortable ASP.NET Web API Client

Sie können jetzt die ASP.NET Web-API-Client verwenden, zum Erstellen von portablen Klassenbibliotheken, die funktionieren in Ihrer Windows Store und Windows Phone 8-Anwendungen.You can now use the ASP.NET Web API Client to create portable class libraries that work across your Windows Store and Windows Phone 8 applications. Sie können auch portable Formatierer erstellen, die zwischen Client und Server gemeinsam genutzt werden können.You can also create portable formatters that can be shared across client and server.

Verbesserte PrüfbarkeitImproved Testability

Web-API 2 macht es viel einfacher, Komponententests testen Sie die API-Controller.Web API 2 makes it much easier to unit test your API controllers. Instanziieren Sie einfach Ihren API-Controller mit Ihrem Request-Nachricht und die Konfiguration, und rufen Sie dann auf die Aktionsmethode, die Sie testen möchten.Just instantiate your API controller with your request message and configuration, and then call the action method you wish to test. Es ist auch einfach zum Simulieren der UrlHelper -Klasse, für die Aktionsmethoden, die linkgenerierung ausführen.It is also easy to mock the UrlHelper class, for action methods that perform link generation.

IHttpActionResultIHttpActionResult

Sie können jetzt IHttpActionResult kapselt das Ergebnis der Ihre Web-API-Aktionsmethoden implementieren.You can now implement IHttpActionResult to encapsulate the result of your Web API action methods. Ein von einer Web-API-Aktion-Methode zurückgegebenen IHttpActionResult wird von der ASP.NET Web-API-Laufzeit zum Erzeugen der resultierenden Response-Nachricht ausgeführt.An IHttpActionResult returned from a Web API action method is executed by the ASP.NET Web API runtime to produce the resultant response message. Ein IHttpActionResult zurückgegeben werden kann, in einer beliebigen Web-API-Aktion zur Vereinfachung der Einheit Testen Ihrer Web-API-Implementierung.An IHttpActionResult can be returned from any Web API action to simplify unit testing of your Web API implementation. Der Einfachheit halber, die eine Anzahl von IHttpActionResult Implementierungen, z. B. die Ergebnisse bereitgestellt werden für bestimmte Rückgabestatuscodes formatiert oder dem Inhalt ausgehandelte Antworten.For convenience a number of IHttpActionResult implementations are provided out of the box including results for returning specific status codes, formatted content or content-negotiated responses.

HttpRequestContextHttpRequestContext

Die neue HttpRequestContext verfolgt alle Status, die der Anforderung verknüpft ist, aber ist nicht sofort verfügbar ist, aus der Anforderung.The new HttpRequestContext tracks any state that is tied to the request but is not immediately available from the request. Beispielsweise können Sie die HttpRequestContext zum Abrufen von Routendaten, die dem Prinzipal zugeordnete Anforderung das Clientzertifikat, das UrlHelper und der virtuelle pfadstamm.For example, you can use the HttpRequestContext to get route data, the principal associated with the request, the client certificate, the UrlHelper and the virtual path root. Sie können ganz einfach erstellen, eine HttpRequestContext für Komponententests Testzwecke.You can easily create an HttpRequestContext for unit testing purposes.

Weil der Prinzipal für die Anforderung, mit der Anforderung übergeben wird nicht die Thread.CurrentPrincipal, der Prinzipal ist jetzt verfügbar, während der gesamten Lebensdauer der Anforderung, während es in der Web-API-Pipeline ist.Because the principal for the request is flowed with the request instead of relying on Thread.CurrentPrincipal, the principal is now available throughout the lifetime of the request while it is in the Web API pipeline.

CORSCORS

Dank einer anderen hervorragenden Beitrag von Brock Allen unterstützt ASP.NET jetzt vollständig Request Freigeben von CORS (Cross Origin).Thanks to another great contribution from Brock Allen, ASP.NET now fully supports Cross Origin Request Sharing (CORS).

Browsersicherheit verhindert, dass eine Webseite AJAX-Anforderungen in eine andere Domäne.Browser security prevents a web page from making AJAX requests to another domain. CORS ist ein W3C-Standard, der einem Server zu lockern die Richtlinie des gleichen Ursprungs ermöglicht.CORS is a W3C standard that allows a server to relax the same-origin policy. Mit CORS kann ein Server explizit einige ursprungsübergreifende Anforderungen zulassen und andere ablehnen.Using CORS, a server can explicitly allow some cross-origin requests while rejecting others.

Web-API 2 unterstützt jetzt CORS, einschließlich der automatische Behandlung von preflight-Anforderungen.Web API 2 now supports CORS, including automatic handling of preflight requests. Weitere Informationen finden Sie unter Aktivieren von Cross-Origin Requests in ASP.NET Web-API.For more information, see Enabling Cross-Origin Requests in ASP.NET Web API.

AuthentifizierungsfilterAuthentication Filters

Authentifizierungsfilter sind eine neue Art von Filter in ASP.NET Web-API, die vor dem Autorisierungsfilter werden also in der ASP.NET Web-API-Pipeline ausgeführt und ermöglichen es Ihnen, geben Sie die Authentifizierung Logik pro-Aktion, pro Controller oder global für alle Controller.Authentication filters are a new kind of filter in ASP.NET Web API that run prior to authorization filters in the ASP.NET Web API pipeline and allow you to specify authentication logic per-action, per-controller, or globally for all controllers. Authentifizierungsfilter Anmeldeinformationen in der Anforderung zu verarbeiten, und geben einen entsprechenden Prinzipal.Authentication filters process credentials in the request and provide a corresponding principal. Authentifizierungsfilter können authentifizierungsanforderungen auch als Reaktion auf nicht autorisierte Anforderungen hinzufügen.Authentication filters can also add authentication challenges in response to unauthorized requests.

ÜberschreibungsfilterFilter Overrides

Sie können jetzt überschreiben, der Filter auf eine bestimmte Aktion-Methode oder den Controller angewendet werden, durch Angabe eines Filters außer Kraft setzen.You can now override which filters apply to a given action method or controller, by specifying an override filter. Überschreibungsfilter Geben Sie einen Satz von Filtertypen, die für einen bestimmten Bereich (Aktions- oder Controllerebene) nicht ausgeführt werden soll.Override filters specify a set of filter types that should not run for a given scope (action or controller). Dadurch können Sie globale Filter hinzufügen, aber dann Ausschließen einiger aus bestimmte Aktionen oder Controllern.This allows you to add global filters, but then exclude some from specific actions or controllers.

OWIN-IntegrationOWIN Integration

ASP.NET Web-API jetzt vollständig unterstützt OWIN und kann jede OWIN-fähigen Hosts ausgeführt werden.ASP.NET Web API now fully supports OWIN and can be run on any OWIN capable host. Enthält auch eine auch namensbasiert , Integration in die OWIN-Authentifizierungssystem bereitstellt.Also included is a HostAuthenticationFilter that provides integration with the OWIN authentication system.

Mit der OWIN-Integration können Sie Web-API in Ihrem eigenen Prozess zusammen mit anderen OWIN-Middleware, wie SignalR selbst hosten.With OWIN integration, you can self-host Web API in your own process alongside other OWIN middleware, such as SignalR. Weitere Informationen finden Sie unter verwenden OWIN zum selfhosten von ASP.NET-Web-API.For more information, see Use OWIN to Self-Host ASP.NET Web API.

ASP.NET SignalR 2.0ASP.NET SignalR 2.0

In den folgenden Abschnitten werden die Funktionen von SignalR 2.0 beschrieben.The following sections describe features of SignalR 2.0.

Ein Beispiel für ein vorhandenes 1.x-Projekt zu SignalR 2.0 aktualisieren, finden Sie unter Aktualisieren einer SignalR 1.x-Projekt.For an example of how to upgrade an existing 1.x project to SignalR 2.0, see Upgrading a SignalR 1.x Project.

Basiert auf OWINBuilt on OWIN

SignalR 2.0 basiert vollständig auf OWIN (Open Web Interface for .NET).SignalR 2.0 is built completely on OWIN (the Open Web Interface for .NET). Diese Änderung wird den Setupvorgang für SignalR-weitaus webgehostete und selbst gehostete SignalR-Anwendungen konsistent, aber es ist auch eine Anzahl von API-Änderungen erforderlich.This change makes the setup process for SignalR much more consistent between web-hosted and self-hosted SignalR applications, but has also required a number of API changes.

MapHubs und MapConnection sind jetzt MapSignalRMapHubs and MapConnection are now MapSignalR

Kompatibilität mit OWIN-Standards, wurden diese Methoden in umbenannt MapSignalR.For compatibility with OWIN standards, these methods have been renamed to MapSignalR. MapSignalR wird aufgerufen, ohne Parameter alle Hubs zugeordnet werden (als MapHubs ist in Version 1.x), um einzelne zuzuordnen PersistentConnection Objekte, geben Sie die Verbindung als der Type-Parameter, und die URL-Erweiterung für die Verbindung als der Erstes Argument.MapSignalR called without parameters will map all hubs (as MapHubs does in version 1.x); to map individual PersistentConnection objects, specify the connection type as the type parameter, and the URL extension for the connection as the first argument.

Die MapSignalR Methode wird aufgerufen, in einer Owin-Startup-Klasse.The MapSignalR method is called in an Owin startup class. Visual Studio 2013 enthält eine neue Vorlage für eine Owin-Startklasse; Um diese Vorlage verwenden möchten, führen Sie folgende Schritte aus:Visual Studio 2013 contains a new template for an Owin startup class; to use this template, do the following:

  1. Mit der rechten Maustaste auf das ProjektRight-click on the project
  2. Wählen Sie hinzufügen, neues Element...Select Add, New Item...
  3. Wählen Sie Owin-Startklasse.Select Owin Startup class. Nennen Sie die neue Klasse "Startup.cs".Name the new class Startup.cs.

In einem Webanwendung, die Owin Startup-Klasse, enthält die MapSignalR Methode wird dann an Owins-Startvorgangs mit einem Eintrag in der Anwendungsknoten der Einstellungen der Datei "Web.config" hinzugefügt, wie unten dargestellt.In a Web application, the Owin startup class containing the MapSignalR method is then added to Owin's startup process using an entry in the application settings node of the Web.Config file, as shown below.

In einem für selbst gehostete Anwendung, die Startup-Klasse übergeben wird, wie der Typparameter der WebApp.Start Methode.In a Self-hosted application, the Startup class is passed as the type parameter of the WebApp.Start method.

Zuordnen von Hubs und Verbindungen in SignalR 1.x (aus der globalen Datei in einer Webanwendung):Mapping hubs and connections in SignalR 1.x (from the global application file in a web application):

protected void Application_Start(object sender, EventArgs e) 
{
    // Map all hubs to "/signalr"
    RouteTable.Routes.MapHubs();
    // Map the Echo PersistentConnection to "/echo"
    RouteTable.Routes.MapConnection<myconnection>("echo", "/echo");
}

Zuordnen von Hubs und Verbindungen in SignalR 2.0 (aus einer Datei für den Owin-Startup-Klasse):Mapping hubs and connections in SignalR 2.0 (from an Owin Startup class file):

using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(MyWebApplication.Startup))]

namespace MyWebApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Map all hubs to "/signalr"
            app.MapSignalR();
            // Map the Echo PersistentConnection to "/echo"
            app.MapSignalR<echoconnection>("/echo");
        }
    }
}

In einem für selbst gehostete Anwendung, die Startup-Klasse übergeben wird, wie der Typparameter für die WebApp.Start Methode, wie unten dargestellt.In a Self-hosted application, the Startup class is passed as the type parameter for the WebApp.Start method, as shown below.

string url = "http://localhost:8080";
using (WebApp.Start<startup>(url))
{
    Console.WriteLine("Server running on {0}", url);
    Console.ReadLine();
}

Cross-Domain-UnterstützungCross-Domain Support

In SignalR 1.x, domänenübergreifende Anforderungen wurden gesteuert, indem einem einzigen EnableCrossDomain-Flag.In SignalR 1.x, cross domain requests were controlled by a single EnableCrossDomain flag. Dieses Flag gesteuert, sowohl JSONP und CORS-Anforderungen.This flag controlled both JSONP and CORS requests. Zur Erhöhung der Flexibilität-alle CORS-Unterstützung wurde aus dem die Server-Komponente von SignalR entfernt (JavaScript-Clients weiterhin verwenden CORS normalerweise, wenn es erkannt wird, dass der Browser unterstützt), und neue OWIN-Middleware zur Unterstützung dieser Szenarios verfügbar gemacht wurde.For greater flexibility, all CORS support has been removed from the server component of SignalR (JavaScript clients still use CORS normally if it is detected that the browser supports it), and new OWIN middleware has been made available to support these scenarios.

In SignalR 2.0 Wenn JSONP auf dem Client (zur Unterstützung von domänenübergreifende Anforderungen in älteren Browsern) erforderlich ist, muss explizit aktiviert werden, durch Festlegen von EnableJSONP auf die HubConfiguration -Objekt true, wie unten dargestellt.In SignalR 2.0, If JSONP is required on the client (to support cross-domain requests in older browsers), it will need to be enabled explicitly by setting EnableJSONP on the HubConfiguration object to true, as shown below. JSONP ist standardmäßig deaktiviert, da er als weniger sicher als CORS ist.JSONP is disabled by default, as it is less secure than CORS.

Um die neuen CORS-Middleware in SignalR 2.0 hinzuzufügen, fügen Sie der Microsoft.Owin.Cors Bibliothek, um das Projekt, und rufen UseCors vor Ihrer SignalR-Middleware, wie im folgenden Abschnitt gezeigt.To add the new CORS middleware in SignalR 2.0, add the Microsoft.Owin.Cors library to your project, and call UseCors before your SignalR middleware, as shown in the section below.

Hinzufügen der Microsoft.Owin.Cors zu Ihrem Projekt: Um diese Bibliothek zu installieren, führen Sie den folgenden Befehl in der Paket-Manager-Konsole ein:Adding Microsoft.Owin.Cors to your project: To install this library, run the following command in the Package Manager Console:

Install-Package Microsoft.Owin.Cors

Dieser Befehl fügt die 2.0.0 Version des Pakets zu Ihrem Projekt.This command will add the 2.0.0 version of the package to your project.

Aufrufen von "usecors"Calling UseCors

Die folgenden Codeausschnitte veranschaulichen, wie implementieren Sie die domänenübergreifende Verbindungen in SignalR 1.x und 2.0.The following code snippets demonstrate how to implement cross-domain connections in SignalR 1.x and 2.0.

Implementieren von domänenübergreifende Anforderungen in SignalR 1.x (aus der globalen Datei)Implementing cross-domain requests in SignalR 1.x (from the global application file)

protected void Application_Start(object sender, EventArgs e) 
{
    var hubConfiguration = new HubConfiguration();
    hubConfiguration.EnableCrossDomain = true;
    RouteTable.Routes.MapHubs(hubConfiguration);
}

Implementieren von domänenübergreifende Anforderungen in SignalR 2.0 (aus einer C#-Code-Datei)Implementing cross-domain requests in SignalR 2.0 (from a C# code file)

Der folgende Code veranschaulicht, wie CORS oder JSONP in einem SignalR 2.0-Projekt zu aktivieren.The following code demonstrates how to enable CORS or JSONP in a SignalR 2.0 project. Dieses Codebeispiel verwendet Map und RunSignalR anstelle von MapSignalR, sodass nur für die SignalR-Anforderungen, die CORS-Unterstützung erfordern, die CORS-Middleware ausgeführt wird (und nicht für den gesamten Datenverkehr an den im angegebenen Pfad MapSignalR.) Map kann auch verwendet werden, für alle anderen Middleware, die für eine bestimmte URL-Präfix, nicht aber für die gesamte Anwendung ausgeführt werden muss.This code sample uses Map and RunSignalR instead of MapSignalR, so that the CORS middleware runs only for the SignalR requests that require CORS support (rather than for all traffic at the path specified in MapSignalR.) Map can also be used for any other middleware that needs to run for a specific URL prefix, rather than for the entire application.

using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using Owin;

[assembly: OwinStartup(typeof(MyWebApplication.Startup))]

namespace MyWebApplication
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Branch the pipeline here for requests that start with "/signalr"
            app.Map("/signalr", map =>
            {
                // Setup the CORS middleware to run before SignalR.
                // By default this will allow all origins. You can 
                // configure the set of origins and/or http verbs by
                // providing a cors options with a different policy.
                map.UseCors(CorsOptions.AllowAll);
                var hubConfiguration = new HubConfiguration 
                {
                    // You can enable JSONP by uncommenting line below.
                    // JSONP requests are insecure but some older browsers (and some
                    // versions of IE) require JSONP to work cross domain
                    // EnableJSONP = true
                };
                // Run the SignalR pipeline. We're not using MapSignalR
                // since this branch already runs under the "/signalr"
                // path.
                map.RunSignalR(hubConfiguration);
            });
        }
    }
}

iOS und Android-Unterstützung über MonoTouch und MonoDroidiOS and Android support via MonoTouch and MonoDroid

Unterstützung für IOS- und Android-Clients mithilfe des MonoTouch und MonoDroid-Komponenten von wurde die Xamarin-Bibliothek.Support has been added for iOS and Android clients using MonoTouch and MonoDroid components from the Xamarin library. Weitere Informationen dazu, wie deren Verwendung finden Sie unter mithilfe von Xamarin-Komponenten.For more information on how to use them, see Using Xamarin Components. Diese Komponenten werden in der Xamarin Store Wenn die SignalR-RTW-Version verfügbar ist.These components will be available in the Xamarin Store when the SignalR RTW release is available.

### Portable .NET client### Portable .NET client

Vereinfachen die bessere plattformübergreifende Entwicklung, die Silverlight, WinRT und Windows Phone-Clients mit einem einzelnen portable .NET Client, der die folgenden Plattformen unterstützt ersetzt wurden:To better facilitate cross-platform development, the Silverlight, WinRT and Windows Phone clients have been replaced with a single portable .NET client that supports the following platforms:

  • NET 4.5NET 4.5
  • Silverlight 5Silverlight 5
  • WinRT (.NET für Windows Store-Apps)WinRT (.NET for Windows Store Apps)
  • Windows Phone 8Windows Phone 8

Neues Self-Hosting-PaketNew Self-Host Package

Es ist jetzt ein NuGet-Paket zu vereinfachen den Einstieg in die Selfhosten von SignalR (SignalR-Anwendungen, die in einem Prozess gehostet werden oder andere Anwendungen, statt auf einem Webserver gehostet werden).There is now a NuGet package to make it easier to get started with SignalR Self-Host (SignalR applications that are hosted in a process or other application, rather than being hosted in a web server). Aktualisieren Sie eine Self-Hosting-Projekt erstellt, die mit SignalR 1.x, entfernen Sie das Paket Microsoft.AspNet.SignalR.Owin, und fügen Sie das Paket Microsoft.AspNet.SignalR.SelfHost.To upgrade a self-host project built with SignalR 1.x, remove the Microsoft.AspNet.SignalR.Owin package, and add the Microsoft.AspNet.SignalR.SelfHost package. Weitere Informationen zu den ersten Schritten mit dem Self-Hosting-Paket finden Sie unter Lernprogramm: Selfhosten von SignalR.For more information on getting started with the self-host package, see Tutorial: SignalR Self-Host.

Abwärtskompatibilität-serverunterstützungBackward-compatible server support

In früheren Versionen von SignalR, die Versionen der SignalR-Paket auf dem Client verwendet und dem Server, die erforderlich sind, identisch sein.In previous versions of SignalR, the versions of the SignalR package used in the client and the server needed to be identical. Um Thick-Clientanwendungen zu unterstützen, die schwer zu aktualisieren, unterstützt bei SignalR 2.0 jetzt eine neuere Serverversion mit einem älteren Client verwenden.In order to support thick-client applications that would be difficult to update, SignalR 2.0 now supports using a newer server version with an older client. Hinweis: SignalR 2.0 unterstützt keine Server, die mit älteren Versionen mit neuere Clients erstellt.Note: SignalR 2.0 does not support servers built with older versions with newer clients.

Server-Unterstützung für .NET 4.0 entferntRemoved server support for .NET 4.0

SignalR 2.0 wurde Unterstützung für die Interoperabilität mit .NET 4.0 Server gelöscht.SignalR 2.0 has dropped support for server interoperability with .NET 4.0. .NET 4.5 muss mit SignalR 2.0-Servern verwendet werden..NET 4.5 must be used with SignalR 2.0 servers. Es ist immer noch ein .NET 4.0-Client für SignalR 2.0.There is still a .NET 4.0 client for SignalR 2.0.

Senden einer Nachricht an eine Liste der Clients und GruppenSending a message to a list of clients and groups

In SignalR 2.0 ist es möglich, eine Nachricht mit einer Liste von Client und der Gruppe IDs senden.In SignalR 2.0, it's possible to send a message using a list of client and group IDs. Die folgenden Codeausschnitte veranschaulichen die Vorgehensweise.The following code snippets demonstrate how to do this.

Senden einer Nachricht an eine Liste der Clients und Gruppen mit PersistentConnectionSending a message to a list of clients and groups using PersistentConnection

using Microsoft.AspNet.SignalR;
using System.Collections.Generic;
public class ChatConnection : PersistentConnection
{
    static List<string> ConnectionIds = new List<string>();
    static List<string> groups = new List<string>{"chatGroup", "chatGroup2"};
    protected override System.Threading.Tasks.Task OnReceived(IRequest request, string connectionId, string data)
    {
        Connection.Send(ConnectionIds, data);
        Groups.Send(groups, data);
        return base.OnReceived(request, connectionId, data);
    }
    protected override System.Threading.Tasks.Task OnConnected(IRequest request, string connectionId)
    {
        ConnectionIds.Add(connectionId);
        Groups.Add(connectionId, "chatGroup");
        return base.OnConnected(request, connectionId);
    }
    protected override System.Threading.Tasks.Task OnDisconnected(IRequest request, string connectionId)
    {
        ConnectionIds.Remove(connectionId);
        return base.OnDisconnected(request, connectionId);
    }
}

Senden einer Nachricht an eine Liste der Clients und Gruppen, die mithilfe von HubsSending a message to a list of clients and groups using Hubs

using Microsoft.AspNet.SignalR;
using System.Collections.Generic;
public class ChatHub : Hub
{
    static List<string> ConnectionIds = new List<string>();
    static List<string> groups = new List<string> { "chatGroup", "chatGroup2" };
    public void Send(string name, string message)
    {
        // Call the broadcastMessage method to update clients.
        Clients.Clients(ConnectionIds).broadcastMessage(name, message);
        Clients.Groups(groups).broadcastMessage(name, message);
    }
    public override System.Threading.Tasks.Task OnConnected()
    {
        ConnectionIds.Add(Context.ConnectionId);
        Groups.Add(Context.ConnectionId, "chatGroup");
        return base.OnConnected();
    }
    public override System.Threading.Tasks.Task OnDisconnected()
    {
        ConnectionIds.Remove(Context.ConnectionId);
        return base.OnDisconnected();
    }
}

Senden einer Nachricht an einen bestimmten BenutzerSending a message to a specific user

Dieses Feature ermöglicht Benutzern, um anzugeben, was die Benutzer-ID basierend auf einer IRequest über eine neue Schnittstelle IUserIdProvider:This feature allows users to specify what the userId is based on an IRequest via a new interface IUserIdProvider:

Die IUserIdProvider-SchnittstelleThe IUserIdProvider interface

public interface IUserIdProvider
{
    string GetUserId(IRequest request);
}

Standardmäßig wird eine Implementierung, die den Benutzernamen des Benutzers IPrincipal.Identity.Name verwendet werden.By default there will be an implementation that uses the user's IPrincipal.Identity.Name as the user name.

In den Hubs wird zum Senden von Nachrichten an diese Benutzer über eine neue API werden:In hubs, you'll be able to send messages to these users via a new API:

Verwenden die Clients.User-APIUsing the Clients.User API

public class MyHub : Hub
{
    public void Send(string userId, string message)
    {
        Clients.User(userId).send(message);
    }
}

Eine bessere Unterstützung von Fehler behandelnBetter Error Handling Support

Benutzer können jetzt auslösen HubException aus einem hubaufruf.Users can now throw HubException from any hub invocation. Der Konstruktor, der die HubException sind eine zeichenfolgenmeldung und ein Objekt zusätzliche Fehlerdaten.The constructor of the HubException can take a string message and an object extra error data. SignalR wird die Ausnahme automatisch serialisiert und sendet es an den Client, in dem er dient zum Ablehnen oder den Aufruf der hubmethode nicht.SignalR will auto-serialize the exception and send it to the client where it will be used to reject/fail the hub method invocation.

Die ausführliche Hub-Ausnahmen zeigen Einstellung hat keinen Einfluss auf HubException zurück an den Client gesendet werden, oder nicht; sie wird immer gesendet.The show detailed hub exceptions setting has no bearing on HubException being sent back to the client or not; it is always sent.

Serverseitiger Code veranschaulicht eine HubException an den Client gesendet.Server-side code demonstrating sending a HubException to the client

public class MyHub : Hub
{
    public void Send(string message)
    {
        if(message.Contains("<script>"))
        {
            throw new HubException("This message will flow to the client", new { user = Context.User.Identity.Name, message = message });
        }

        Clients.All.send(message);
    }
}

JavaScript-Client-Codebeispiel zur Erläuterung, reagieren auf eine vom Server gesendeten HubExceptionJavaScript client code demonstrating responding to a HubException sent from the server

myHub.server.send("<script>")
            .fail(function (e) {
                if (e.source === 'HubException') {
                    console.log(e.message + ' : ' + e.data.user);
                }
            });

.NET Client-Code veranschaulicht, reagieren auf eine vom Server gesendeten HubException.NET client code demonstrating responding to a HubException sent from the server

try
{
    await myHub.Invoke("Send", "<script>");
}
catch(HubException ex)
{
    Conosle.WriteLine(ex.Message);
}

Einfacher Komponententest Testen von HubsEasier unit testing of hubs

SignalR 2.0 umfasst eine Schnittstelle namens IHubCallerConnectionContext Hubs, der zum Erstellen von mock Seite Aufrufe einfacher macht.SignalR 2.0 includes an interface called IHubCallerConnectionContext on Hubs that makes it easier to create mock client side invocations. Die folgenden Codeausschnitte veranschaulichen das Verwenden dieser Schnittstelle mit beliebten testumgebungen xUnit.net und Moq.The following code snippets demonstrate using this interface with popular test harnesses xUnit.net and moq.

Komponententests in SignalR mit xUnit.netUnit testing SignalR with xUnit.net

[Fact]
public void HubsAreMockableViaDynamic()
{
    bool sendCalled = false;
    var hub = new MyHub();
    var mockClients = new Mock<IHubCallerConnectionContext>();
    hub.Clients = mockClients.Object;
    dynamic all = new ExpandoObject();
    all.send = new Action<string>(message =>
    {
        sendCalled = true;
    });
    mockClients.Setup(m => m.All).Returns((ExpandoObject)all);
    hub.Send("foo");
    Assert.True(sendCalled);
}

Komponententests in SignalR mit moqUnit testing SignalR with moq

[Fact]
public interface IClientContract
{
    void send(string message);
}
public void HubsAreMockableViaType()
{
    var hub = new MyHub();
    var mockClients = new Mock<IHubCallerConnectionContext>();
    var all = new Mock<IClientContract>();
    hub.Clients = mockClients.Object;
    all.Setup(m => m.send(It.IsAny<string>())).Verifiable();
    mockClients.Setup(m => m.All).Returns(all.Object);
    hub.Send("foo");
    all.VerifyAll();

JavaScript-FehlerbehandlungJavaScript error handling

In SignalR 2.0 zurück alle Rückrufe von JavaScript-Fehlerbehandlung JavaScript-Fehler-Objekte anstelle von unformatierten Zeichenfolgen.In SignalR 2.0, all JavaScript error handling callbacks return JavaScript error objects instead of raw strings. Dadurch wird ein SignalR umfangreichere Informationen in Ihrem Fehlerhandler.This allows SignalR to flow richer information to your error handlers. Sie erhalten die innere Ausnahme aus der source Eigenschaft des Fehlers.You can get the inner exception from the source property of the error.

JavaScript-Clientcode, der die Start.Fail-Ausnahme behandelt.JavaScript client code that handles the Start.Fail exception

connection.start().fail(function(e) {
    console.log('The error is: ' + e.message);
});

ASP.NET IdentityASP.NET Identity

Neue ASP.NET-MitgliedschaftssystemNew ASP.NET Membership System

ASP.NET Identity ist das neue Mitgliedschaftssystem für ASP.NET-Anwendungen.ASP.NET Identity is the new membership system for ASP.NET applications. ASP.NET Identity vereinfacht benutzerspezifische Profildaten in Anwendungsdaten zu integrieren.ASP.NET Identity makes it easy to integrate user-specific profile data with application data. ASP.NET Identity ermöglicht auch das Persistenzmodell für Benutzerprofile in Ihrer Anwendung auswählen.ASP.NET Identity also allows you to choose the persistence model for user profiles in your application. Sie können die Daten in einer SQL Server-Datenbank oder einem anderen Datenspeicher, einschließlich NoSQL-Datenspeicher wie Azure Storage-Tabellen speichern.You can store the data in a SQL Server database or another data store, including NoSQL data stores such as Azure Storage Tables. Weitere Informationen finden Sie unter einzelne Benutzerkonten in Erstellen von ASP.NET-Webprojekten in Visual Studio 2013.For more information, see Individual User Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

Anspruchbasierte AuthentifizierungClaims-based authentication

ASP.NET unterstützt nun die anspruchsbasierte Authentifizierung verwendet werden, wo die Identität des Benutzers als einen Satz von Ansprüchen von einem vertrauenswürdigen Aussteller dargestellt wird.ASP.NET now supports claims-based authentication, where the user's identity is represented as a set of claims from a trusted issuer. Benutzer können sein, authentifizierten eines Benutzernamens und Kennworts in einer Datenbank gespeichert oder über soziale Netzwerke als Identitätsanbieter (z. B.: Microsoft-Konten, Facebook, Google, Twitter), oder die Verwendung von Organisationskonten durch Azure Active Directory oder Active Directory Federation Services (ADFS).Users can be authenticated using a username and password maintained in an application database, or using social identity providers (for example: Microsoft Accounts, Facebook, Google, Twitter), or using organizational accounts through Azure Active Directory or Active Directory Federation Services (ADFS).

Azure Active Directory und Windows Server Active Directory-IntegrationIntegration with Azure Active Directory and Windows Server Active Directory

Sie können jetzt ASP.NET-Projekte erstellen, die Azure Active Directory oder Windows Server Active Directory (AD) für die Authentifizierung zu verwenden.You can now create ASP.NET projects that use Azure Active Directory or Windows Server Active Directory (AD) for authentication. Weitere Informationen finden Sie unter Organisationskonten in Erstellen von ASP.NET-Webprojekten in Visual Studio 2013.For more information, see Organizational Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

OWIN-IntegrationOWIN Integration

Authentifizierung in ASP.NET basiert jetzt auf OWIN-Middleware, die auf einem OWIN-basierten Host verwendet werden können.ASP.NET authentication is now based on OWIN middleware that can be used on any OWIN-based host. Weitere Informationen zu OWIN, finden Sie unter den folgenden Microsoft OWIN-Komponenten Abschnitt.For more information about OWIN, see the following Microsoft OWIN Components section.

Microsoft OWIN-KomponentenMicrosoft OWIN Components

Öffnen von Weboberfläche für .NET (OWIN) definiert eine Abstraktion zwischen Webservern für .NET und Webanwendungen.Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN entkoppelt die Webanwendung aus dem Server, sodass Web Applications Hosts gegenüber agnostisch.OWIN decouples the web application from the server, making web applications host-agnostic. Sie können z. B. eine OWIN-basierten Webanwendung in IIS hosten oder selbst in einem benutzerdefinierten Prozess hosten.For example, you can host an OWIN-based web application in IIS or self-host it in a custom process.

Änderungen, die in den Microsoft-OWIN-Komponenten (auch bekannt als das Katana-Projekt) umfassen neue Server und Host-Komponenten, neue Bibliotheken und -Middleware und neue Authentifizierungs-Middleware.Changes introduced in the Microsoft OWIN components (also known as the Katana project) include new server and host components, new helper libraries and middleware, and new authentication middleware.

Weitere Informationen zu OWIN und Katana, finden Sie unter Neuigkeiten in der OWIN und Katana.For more information about OWIN and Katana, see What's new in OWIN and Katana.

Hinweis: OWIN Anwendungen können nicht im klassischen Modus von IIS ausgeführt werden, müssen im integrierten Modus ausgeführt werden.Note: OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

Hinweis: OWIN Anwendungen mit voller Vertrauenswürdigkeit ausgeführt werden müssen.Note: OWIN applications must be run in full trust.

Neue Server und -HostsNew Servers and Hosts

In dieser Version wurden neue Komponenten hinzugefügt, um Self-Hosting-Szenarios zu ermöglichen.With this release, new components were added to enable self-host scenarios. Zu diesen Komponenten gehören die folgenden NuGet-Pakete:These components include the following NuGet packages:

  • Microsoft.Owin.Host.HttpListener.Microsoft.Owin.Host.HttpListener. Stellt einen OWIN-Server, der verwendet HttpListener zum Abhören von HTTP-Anforderungen und leiten Sie ihn in die OWIN-Pipeline.Provides an OWIN server that uses HttpListener to listen for HTTP requests and direct them into the OWIN pipeline.
  • Microsoft.Owin.Hosting stellt eine Bibliothek für Entwickler, die eine OWIN-Pipeline in einem benutzerdefinierten Prozess, z. B. eine Konsolenanwendung oder einen Windows-Dienst selbst hosten möchten.Microsoft.Owin.Hosting Provides a library for developers who wish to self-host an OWIN pipeline in a custom process, such as a console application or Windows service.
  • OwinHost.OwinHost. Stellt eine eigenständige ausführbare Datei, die umschließt Microsoft.Owin.Hosting und ermöglicht Ihnen die eine OWIN-Pipeline selbst hosten, ohne eine benutzerdefinierte hostanwendung schreiben zu müssen.Provides a stand-alone executable that wraps Microsoft.Owin.Hosting and lets you self-host an OWIN pipeline without having to write a custom host application.

Darüber hinaus die Microsoft.Owin.Host.SystemWeb Paket ermöglicht jetzt die Middleware Hinweise zum Angeben der SystemWeb Server, der angibt, dass die Middleware in einer bestimmten Pipeline-Phase von ASP.NET aufgerufen werden soll.In addition, the Microsoft.Owin.Host.SystemWeb package now enables middleware to provide hints to the SystemWeb server, indicating that the middleware should be called during a specific ASP.NET pipeline stage. Diese Funktion ist besonders nützlich für die authentifizierungsmiddleware, die einem frühen Zeitpunkt in der ASP.NET-Pipeline ausgeführt werden sollen.This feature is particularly useful for authentication middleware, which should run early in the ASP.NET pipeline.

Bibliotheken und MiddlewareHelper Libraries and Middleware

Obwohl Sie nur die Funktions- und Typnamen Definitionen von OWIN-Spezifikation, mit der OWIN-Komponenten schreiben, können die neue Microsoft.Owin Paket stellt einen benutzerfreundlicheren Satz an Abstraktionen bereit.Although you can write OWIN components using only the function and type definitions from the OWIN specification, the new Microsoft.Owin package provides a more user-friendly set of abstractions. Dieses Paket kombiniert mehrere frühere Pakete (z. B. Owin.Extensions, Owin.Types) in einer einzelnen, klar strukturierten Objektmodell, das dann leicht von anderen OWIN-Komponenten verwendet werden kann.This package combines several earlier packages (e.g., Owin.Extensions, Owin.Types) into a single, well-structured object model that can then be easily used by other OWIN components. Die meisten Microsoft-OWIN-Komponenten verwenden, jetzt dieses Paket.In fact, the majority of Microsoft OWIN components now use this package.

Note

OWIN Anwendungen können nicht im klassischen Modus von IIS ausgeführt werden, müssen im integrierten Modus ausgeführt werden.OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

Note

OWIN Anwendungen mit voller Vertrauenswürdigkeit ausgeführt werden müssen.OWIN applications must be run in full trust.

Diese Version enthält außerdem das Microsoft.Owin.Diagnostics-Paket, das zum Überprüfen einer ausgeführten Anwendung für die OWIN-Middleware sowie Fehlerseite-Middleware, um den Fehler untersuchen enthält.This release also includes the Microsoft.Owin.Diagnostics package, which includes middleware to validate a running OWIN application, plus error-page middleware to help investigate failures.

Authentication-KomponentenAuthentication Components

Die folgenden Authentifizierungskomponenten sind verfügbar.The following authentication components are available.

  • Microsoft.Owin.Security.ActiveDirectory.Microsoft.Owin.Security.ActiveDirectory. Ermöglicht die Authentifizierung mit einer lokalen oder cloudbasierten Directory Services.Enables authentication using on-premise or cloud-based directory services.
  • Microsoft.Owin.Security.Cookies aktiviert die Authentifizierung mithilfe von Cookies.Microsoft.Owin.Security.Cookies Enables authentication using cookies. Dieses Paket wurde zuvor mit dem Namen Microsoft.Owin.Security.Forms.This package was previously named Microsoft.Owin.Security.Forms.
  • Microsoft.Owin.Security.Facebook aktiviert die Authentifizierung mit Facebook OAuth-Dienst basiert.Microsoft.Owin.Security.Facebook Enables authentication using Facebook's OAuth-based service.
  • Microsoft.Owin.Security.Google aktiviert die Authentifizierung mithilfe Googles OpenID-basierten Dienst.Microsoft.Owin.Security.Google Enables authentication using Google's OpenID-based service.
  • Microsoft.Owin.Security.Jwt aktiviert die Authentifizierung mit JWT-Token.Microsoft.Owin.Security.Jwt Enables authentication using JWT tokens.
  • Microsoft.Owin.Security.MicrosoftAccount Enables authentication using Microsoft accounts.Microsoft.Owin.Security.MicrosoftAccount Enables authentication using Microsoft accounts.
  • Microsoft.Owin.Security.OAuth.Microsoft.Owin.Security.OAuth. Stellt einen OAuth-autorisierungsserver sowie die Middleware zum Authentifizieren von Bearer-Tokens bereit.Provides an OAuth authorization server as well as middleware for authenticating bearer tokens.
  • Microsoft.Owin.Security.Twitter aktiviert die Authentifizierung über Twitter OAuth-Dienst basiert.Microsoft.Owin.Security.Twitter Enables authentication using Twitter's OAuth-based service.

Diese Version umfasst auch die Microsoft.Owin.Cors Paket, das Middleware für die Verarbeitung von Cross-Origin-HTTP-Anforderungen enthält.This release also includes the Microsoft.Owin.Cors package, which contains middleware for processing cross-origin HTTP requests.

Note

Unterstützung für die Signierung von JWT wurde in der endgültigen Version von Visual Studio 2013 entfernt.Support for JWT signing has been removed in the final version of Visual Studio 2013.

Entity Framework 6Entity Framework 6

Eine Liste der neuen Features und andere Änderungen in Entity Framework 6, finden Sie unter Entity Framework-Versionsverlaufs.For a list of new features and other changes in Entity Framework 6, see Entity Framework Version History.

ASP.NET Razor-3ASP.NET Razor 3

ASP.NET Razor 3 enthält die folgenden neuen Features:ASP.NET Razor 3 includes the following new features:

  • Unterstützung für die Registerkarte zu bearbeiten.Support for Tab editing. Zuvor die Dokument formatieren -Befehl, automatische Einzug und automatische Formatierung in Visual Studio funktionierte nicht ordnungsgemäß bei Verwendung der Tabulatoren beibehalten Option.Previously, the Format Document command, auto indenting, and auto formatting in Visual Studio did not work correctly when using the Keep Tabs option. Diese Änderung behebt Visual Studio, die Formatierung für Razor-Code für die Registerkarte, die Formatierung.This change corrects Visual Studio formatting for Razor code for tab formatting.
  • Unterstützung für URL-Rewrite-Regeln beim Generieren von Links.Support for URL Rewrite rules when generating links.
  • Entfernen des transparenten Sicherheitsattribut.Removal of security transparent attribute.

    Note

    Dies ist eine wichtige Änderung und Razor-3 nicht kompatibel mit MVC 4 und früheren Versionen bei heruntergefahrenem Razor 2 nicht kompatibel mit MVC5 oder Assemblys, die für MVC5 kompiliert ist.This is a breaking change, and makes Razor 3 incompatible with MVC4 and earlier, while Razor 2 is incompatible with MVC5 or assemblies compiled against MVC5.

Razor 3 behobene Problemen in Visual Studio 2013 älterer Versionen finden Sie hier.Razor 3 issues fixed in Visual Studio 2013 from pre-release versions can be found here.

ASP.NET-App SuspendASP.NET App Suspend

ASP.NET App Suspend ist eine revolutionäre-Funktion in .NET Framework 4.5.1, die Benutzeroberfläche und wirtschaftlichen Gesamtmodell spielt für das Hosten von große Anzahl von ASP.NET-Websites unter einem einzelnen Computer radikal ändert.ASP.NET App Suspend is a game-changing feature in the .NET Framework 4.5.1 that radically changes the user experience and economic model for hosting large numbers of ASP.NET sites on a single machine. Weitere Informationen finden Sie unter ASP.NET App Suspend – reaktionsfähiges .NET Web shsp.For more information, see ASP.NET App Suspend – responsive shared .NET web hosting.

Bekannte Probleme und aktueller ÄnderungenKnown Issues and Breaking Changes

Dieser Abschnitt beschreibt bekannte Probleme und wichtige Änderungen in der ASP.NET und Webtools für Visual Studio 2013.This section describes known issues and breaking changes in the ASP.NET and Web Tools for Visual Studio 2013.

NuGetNuGet

ASP.NET-Web-APIASP.NET Web API

  1. ODataQueryOptions<T>.ApplyTo(IQueryable) Gibt keinen zurück IQueryable<T> immer, wie wir Unterstützung für hinzugefügt $select und $expand.ODataQueryOptions<T>.ApplyTo(IQueryable) doesn't return IQueryable<T> always, as we added support for $select and $expand.

    Für unseren früheren Beispielen ODataQueryOptions<T> immer die Typumwandlung der Rückgabewert von ApplyTo zu IQueryable<T>.Our earlier samples for ODataQueryOptions<T> always casted the return value from ApplyTo to IQueryable<T>. Es funktioniert hat zuvor, da die Abfrage, die Optionen für uns unterstützt zuvor ($filter, $orderby, $skip, $top) ändern Sie die Form der Abfrage nicht.This worked earlier because the query options that we supported earlier ($filter, $orderby, $skip, $top) do not change the shape of the query. Nun, da wir unterstützen $select und $expand den Rückgabewert von ApplyTo nicht IQueryable<T> immer.Now that we support $select and $expand the return value from ApplyTo will not be IQueryable<T> always.

    // Sample ODataQueryOptions<T> usage from earlier
    public IQueryable<Customer> Get(ODataQueryOptions<Customer> query)
    {
        IQueryable<customer> result="query.ApplyTo(_customers)" as iqueryable<customer>; return result;
    }
    

    Wenn Sie den Beispielcode von vorhin verwenden, es werden weiterhin ausgeführt, wenn der Client keine sendet $select und $expand.If you are using the sample code from earlier, it will continue working if the client does not send $select and $expand. Aber wenn Sie unterstützen möchten $select und $expand müssen Sie diesen Code so zu ändern.However, if you wish to support $select and $expand you have to change that code to this.

    public IHttpActionResult Get(ODataQueryOptions<Customer> query)
    {
        IQueryable result = query.ApplyTo(_customers);
        return Ok(result, result.GetType());
    }
     
    private IHttpActionResult Ok(object content, Type type)
    {
        Type resultType = typeof(OkNegotiatedContentResult<>).MakeGenericType(type);
        return Activator.CreateInstance(resultType, content, this) as IHttpActionResult;
    }
    
  2. Request.Url oder RequestContext.Url ist null, während eine BatchanforderungRequest.Url or RequestContext.Url is null during a batch request

    In einem Szenario mit Batchverarbeitung UrlHelper ist null, wenn der Zugriff von Request.Url oder RequestContext.Url.In a batching scenario, UrlHelper is null when accessed from Request.Url or RequestContext.Url.

    Dieses Problem ist hier zurzeit nachverfolgt: BatchRequestContext.Url ist null für die Batchverarbeitung Anforderung.This issue is currently tracked here: BatchRequestContext.Url is null for batching request.

    Die problemumgehung für dieses Problem besteht darin erstellen Sie eine neue Instanz der UrlHelper, wie im folgenden Beispiel:The workaround for this issue is to create a new instance of UrlHelper, as in the following example:

    Erstellen eine neue Instanz der UrlHelperCreating a new instance of UrlHelper

    if (RequestContext.Url == null)
    {
        RequestContext.Url = new UrlHelper(Request);
    }
    

ASP.NET MVCASP.NET MVC

  1. Wenn MVC5- und OrgAuth, verwenden Sie Ansichten verfügen, die AntiForgerToken Validierungen, möglicherweise stoßen Sie auf den folgenden Fehler beim Senden von Daten in der Ansicht:When using MVC5 and OrgAuth, if you have views which do AntiForgerToken validation, you might come across the following error when you post data to the view:

    Fehler:Error:

    Serverfehler in Anwendung '/'.Server Error in '/' Application.

    Ein Anspruch des Typs "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'oder'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider" war nicht vorhanden ist, auf die angegebene "ClaimsIdentity". Um Unterstützung für fälschungssicherheitstoken token mit Ansprüchen basierende Authentifizierung zu aktivieren, stellen Sie sicher, dass konfigurierten Anspruchsanbieter-Vertrauensstellung beide dieser Ansprüche auf der "ClaimsIdentity"-Instanzen bereitstellt, die sie generiert. Wenn die konfigurierten Anspruchsanbieter-Vertrauensstellung stattdessen einen anderen Anspruchstyp als eindeutiger Bezeichner verwendet, kann es durch Festlegen der statischen Eigenschaft AntiForgeryConfig.UniqueClaimTypeIdentifier konfiguriert werden.A claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' or 'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' was not present on the provided ClaimsIdentity. To enable anti-forgery token support with claims-based authentication, please verify that the configured claims provider is providing both of these claims on the ClaimsIdentity instances it generates. If the configured claims provider instead uses a different claim type as a unique identifier, it can be configured by setting the static property AntiForgeryConfig.UniqueClaimTypeIdentifier.

    Problemumgehung:Workaround:

    Fügen Sie die folgende Zeile in "Global.asax", um das Problem zu beheben:Add the following line in Global.asax to fix it:

    AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;

    Dies wird für die nächste Version behoben.This will be fixed for the next release.

  2. Nach dem Upgrade einer MVC4 app MVC5 – erstellen Sie die Projektmappe, und starten Sie ihn aus.After upgrading an MVC4 app to MVC5, build the solution and launch it. Sie sollten die folgende Fehlermeldung angezeigt:You should see the following error:

    [A] System.Web.WebPages.Razor.Configuration.HostSection kann nicht umgewandelt werden, um [B]System.Web.WebPages.Razor.Configuration.HostSection.[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to [B]System.Web.WebPages.Razor.Configuration.HostSection. Typ A stammt von ' System.Web.WebPages.Razor, Version = 2.0.0.0, Kultur = Neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort ' C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\ v4. 0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll ".Type A originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. Typ B stammt "System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = Neutral, PublicKeyToken = 31bf3856ad364e35' im Kontext 'Default' am Speicherort ' C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6d05bbd0\ e8b5908e\assembly\dl3\c9cbca63\f8910382_6273ce01\System.Web.WebPages.Razor.dll ".Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\6d05bbd0\e8b5908e\assembly\dl3\c9cbca63\f8910382_6273ce01\System.Web.WebPages.Razor.dll'.

    Um die oben angegebene Fehler zu beheben, öffnen Sie alle der Web.config-Dateien (einschließlich derjenigen, die im Ordner "Views") in Ihr Projekt, und gehen Sie wie folgt:To fix the above error, open all the Web.config files (including the ones in the Views folder) in your project and do the following:

    1. Aktualisieren Sie alle Vorkommen von Version "4.0.0.0" von "System.Web.Mvc", "5.0.0.0".Update all occurrences of version "4.0.0.0" of "System.Web.Mvc" to "5.0.0.0".

    2. Aktualisieren Sie alle Vorkommen von "System.Web.Helpers," Version "2.0.0.0" "System.Web.WebPages" und "System.Web.WebPages.Razor" auf "3.0.0.0"Update all occurrences of version "2.0.0.0" of "System.Web.Helpers", "System.Web.WebPages" and "System.Web.WebPages.Razor" to "3.0.0.0"

      Nachdem Sie die oben genannten Änderungen vornehmen, sollten die Assemblybindungen beispielsweise wie folgt aussehen:For example, after you make the above changes, the assembly bindings should look like this:

      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
        </dependentAssembly>
        <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
      

      Informationen zum Upgrade von MVC 4-Projekte auf MVC 5 finden Sie unter das Upgrade von einer ASP.NET MVC 4 und Web-API-Projekt auf ASP.NET MVC 5 und Web-API 2.For information on upgrading MVC 4 projects to MVC 5, see How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2.

  3. Wenn Sie die clientseitige Validierung mit jQuery Unobtrusive Validation verwenden zu können, ist der validierungsmeldung manchmal für eine HTML-Eingabeelement mit Typ = "Number".When using client-side validation with jQuery Unobtrusive Validation, the validation message is sometimes incorrect for an HTML input element with type='number'. Der Validierungsfehler für einen erforderlichen Wert ("das Altersfeld ist erforderlich") wird angezeigt, wenn eine ungültige Anzahl die richtige Nachricht eingegeben werden, dass eine gültige Zahl erforderlich ist.The validation error for a required value ("The Age field is required") is shown when an invalid number is entered instead of the correct message that a valid number is required.

    Dieses Problem wird häufig mit eingerüsteten Code für ein Modell mit einer Zahl mit Vorzeichen in den Bearbeitungs- und änderungsansichten gefunden.This issue is commonly found with scaffolded code for a model with an integer property on the Create and Edit views.

    Um dieses Problem zu umgehen, ändern Sie das Hilfsprogramm "Editor" aus:To work around this issue, change the editor helper from:

    @Html.EditorFor(person => person.Age)

    Nach:To:

    @Html.TextBoxFor(person => person.Age)

  4. Teilweise Vertrauenswürdigkeit wird von ASP.NET MVC 5 nicht mehr unterstützt.ASP.NET MVC 5 no longer supports partial trust. Projekte, die Verknüpfung mit den Binärdateien MVC- oder Web-API sollte Entfernen der SecurityTransparent Attribut und die AllowPartiallyTrustedCallers Attribut.Projects linking to the MVC or WebAPI binaries should remove the SecurityTransparent attribute and the AllowPartiallyTrustedCallers attribute. Entfernen diese Attribute werden Compilerfehler wie den folgenden entfernen.Removing these attributes will eliminate compiler errors such as the following.

    Attempt by security transparent method ‘MyComponent' to access security critical type 'System.Web.Mvc.MvcHtmlString' failed. Assembly 'PagedList.Mvc, Version=4.3.0.0, Culture=neutral, PublicKeyToken=abbb863e9397c5e1' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.

    Beachten Sie, wie ein Nebeneffekt, dass Sie diese 4.0 und 5.0-Assemblys nicht in derselben Anwendung verwenden können.Note, as a side effect of this you cannot use 4.0 and 5.0 assemblies in the same application. Sie müssen alle auf 5.0 aktualisiert.You need to update all of them to 5.0.

SPA-Vorlage mit Facebook-Autorisierung verursachen Instabilität in Internet Explorer, während die Website, in der Intranetzone gehostet wirdSPA Template with Facebook authorization may cause instability in IE while the web site is hosted in intranet zone

Die SPA-Vorlage enthält externe melden Sie sich mit Facebook.The SPA template provides external log in with Facebook. Wenn das Projekt erstellt haben, mit der Vorlage lokal ausgeführt wird, kann die Anmeldung bei Internet Explorer zum Absturz führen.When the project created with the template is running locally, signing in may cause IE to crash.

Projektmappe:Solution:

  1. Hosten Sie die Website in der Zone des Internets. oderHost the web site in internet zone; or

  2. Testen Sie das Szenario, in einem anderen Browser als Internet Explorer.Test the scenario in a browser other than IE.

Web Forms-GerüstWeb Forms Scaffolding

Web Forms-Gerüsts aus VS2013 entfernt wurde, und es werden in einem zukünftigen Update von Visual Studio zur Verfügung stehen.Web Forms Scaffolding has been removed from VS2013 and will be available in a future update to Visual Studio. Allerdings weiterhin können Gerüstbau in Web Forms-Projekten Sie durch Hinzufügen von MVC-Abhängigkeiten, und Generieren von Gerüstbau für MVC.However, you can still use scaffolding within a Web Forms project by adding MVC dependencies and generating scaffolding for MVC. Das Projekt enthält eine Kombination von Web Forms und MVC.Your project will contain a combination of Web Forms and MVC.

Um MVC das Web Forms-Projekt hinzuzufügen, fügen Sie ein neues gerüstelement hinzu, und wählen Sie MVC 5-Abhängigkeiten.To add MVC to your Web Forms project, add a new scaffolded item and select MVC 5 Dependencies. Wählen Sie minimale oder vollständige, je nachdem, ob Sie alle Inhaltsdateien, z. B. Skripts benötigen.Select either Minimal or Full depending on whether you need all of the content files, such as scripts. Anschließend fügen Sie eines Elements mit Gerüst für MVC, das die Ansichten und ein Controller im Projekt erstellt wird.Then, add a scaffolded item for MVC, which will create views and a controller in your project.

MVC und Web-API-Gerüstbau - HTTP 404-Antwort, wurde nicht gefunden-FehlerMVC and Web API Scaffolding - HTTP 404, Not Found error

Wenn beim Hinzufügen eines Elements mit Gerüst zu einem Projekt ein Fehler aufgetreten ist, ist es möglich, die Ihr Projekt in einem inkonsistenten Zustand gelassen werden.If an error is encountered when adding a scaffolded item to a project, it is possible your project will be left in an inconsistent state. Einige der Gerüstbau werden die Änderungen werden rückgängig gemacht werden, aber andere Änderungen, z. B. die installierten NuGet-Pakete werden nicht zurückgesetzt werden.Some of the changes made be scaffolding will be rolled back but other changes, such as the installed NuGet packages, will not be rolled back. Wenn die Weiterleitung Änderungen an der Konfiguration ein Rollback ausgeführt werden, erhalten Benutzer einen HTTP 404-Fehler bei der Navigation zu Elementen erstellt haben.If the routing configuration changes are rolled back, users will receive an HTTP 404 error when navigating to scaffolded items.

Problemumgehung:Workaround:

  • Klicken Sie zum Beheben dieses Fehlers für MVC, fügen Sie ein neues gerüstelement hinzu, und wählen Sie MVC 5-Abhängigkeiten (minimale oder vollständige).To fix this error for MVC, add a new scaffolded item and select MVC 5 Dependencies (either Minimal or Full). Dabei werden alle erforderlichen Änderungen zu Ihrem Projekt hinzufügen.This process will add all of the required changes to your project.

  • So beheben Sie diesen Fehler für Web-API:To fix this error for Web API:

    1. Fügen Sie der Klasse "webapiconfig" zu Ihrem Projekt hinzu.Add the WebApiConfig class to your project.

      public static class WebApiConfig
      {
          public static void Register(HttpConfiguration config)
          {
              config.MapHttpAttributeRoutes();
              config.Routes.MapHttpRoute(
                  name: "DefaultApi",
                  routeTemplate: "api/{controller}/{id}",
                  defaults: new { id = RouteParameter.Optional }
              );
          }
      }
      
      Public Module WebApiConfig
          Public Sub Register(ByVal config As HttpConfiguration)
              config.MapHttpAttributeRoutes()
              config.Routes.MapHttpRoute(
                name:="DefaultApi",
                routeTemplate:="api/{controller}/{id}",
                defaults:=New With {.id = RouteParameter.Optional}
              )
          End Sub
      End Module
      
    2. Konfigurieren Sie in der Anwendung WebApiConfig.Register_Start-Methode in "Global.asax" wie folgt:Configure WebApiConfig.Register in the Application_Start method in Global.asax as follows:

      public class WebApiApplication : System.Web.HttpApplication
      {
          protected void Application_Start()
          {
              GlobalConfiguration.Configure(WebApiConfig.Register);    
          }
      }
      
      Public Class WebApiApplication
           Inherits System.Web.HttpApplication
       
           Sub Application_Start()     
             GlobalConfiguration.Configure(AddressOf WebApiConfig.Register)       
           End Sub
      End Class