ASP.NET et Web Tools pour Visual Studio 2013 - Notes de publicationASP.NET and Web Tools for Visual Studio 2013 Release Notes

by Microsoftby Microsoft

Ce document décrit la version de ASP.NET et Web Tools pour Visual Studio 2013.This document describes the release of ASP.NET and Web Tools for Visual Studio 2013.

SommaireContents

Nouvelles fonctionnalités dans ASP.NET et Web Tools pour Visual Studio 2013New Features in ASP.NET and Web Tools for Visual Studio 2013

Notes d’installationInstallation Notes

ASP.NET et Web Tools pour Visual Studio 2013 sont regroupés dans le programme d’installation principal et peut être téléchargé ici.ASP.NET and Web Tools for Visual Studio 2013 are bundled in the main installer and can be downloaded here.

DocumentationDocumentation

Didacticiels et autres informations sur ASP.NET et Web Tools pour Visual Studio 2013 sont disponibles à partir de la site web ASP.NET.Tutorials and other information about ASP.NET and Web Tools for Visual Studio 2013 are available from the ASP.NET web site.

Configuration logicielleSoftware Requirements

ASP.NET et Web Tools requiert Visual Studio 2013.ASP.NET and Web Tools requires Visual Studio 2013.

Nouvelles fonctionnalités dans ASP.NET et Web Tools pour Visual Studio 2013New Features in ASP.NET and Web Tools for Visual Studio 2013

Les sections suivantes décrivent les fonctionnalités qui ont été introduites dans la version.The following sections describe the features that have been introduced in the release.

One ASP.NETOne ASP.NET

Avec la version de Visual Studio 2013, nous avons adopté une étape vise à unifier l’expérience de l’utilisation de technologies d’ASP.NET, afin que vous pouvez facilement combiner et correspondent à ceux que vous souhaitez.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. Par exemple, vous pouvez démarrer un projet à l’aide de MVC et facilement ajouter ultérieurement des pages Web Forms au projet ou structurer des API Web dans un projet Web Forms.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. One ASP.NET concerne les rend plus facile pour vous en tant que développeur d’effectuer les opérations que vous aimez dans ASP.NET.One ASP.NET is all about making it easier for you as a developer to do the things you love in ASP.NET. Quelle que soit la technologie que vous choisissez, vous pouvez avoir confiance que vous générez sur l’infrastructure sous-jacente approuvé de One ASP.NET.No matter what technology you choose, you can have confidence that you are building on the trusted underlying framework of One ASP.NET.

Nouvelle expérience de projet WebNew Web Project Experience

Nous avons amélioré l’expérience de création de projets web dans Visual Studio 2013.We have enhanced the experience of creating new web projects in Visual Studio 2013. Dans le nouveau projet Web ASP.NET dialogue, vous pouvez sélectionner le type de projet, vous souhaitez configurez n’importe quelle combinaison de technologies (Web Forms, MVC, Web API), configurez les options d’authentification et ajoutez un projet de test unitaire.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.

Nouveau projet ASP.NET

La nouvelle boîte de dialogue vous permet de modifier les options d’authentification par défaut pour la plupart des modèles.The new dialog enables you to change the default authentication options for many of the templates. Par exemple, lorsque vous créez un projet Web Forms ASP.NET vous pouvez sélectionner une des options suivantes :For example, when you create an ASP.NET Web Forms project you can select any of the following options:

  • Aucune authentificationNo Authentication
  • Comptes d’utilisateur individuels (l’appartenance ASP.NET ou des journaux de fournisseur de réseau social dans)Individual User Accounts (ASP.NET membership or social provider log in)
  • Comptes d’organisation (Active Directory dans une application internet)Organizational Accounts (Active Directory in an internet application)
  • Authentification Windows (Active Directory dans une application intranet)Windows Authentication (Active Directory in an intranet application)

Options d’authentification

Pour plus d’informations sur le nouveau processus pour la création de projets web, consultez Creating ASP.NET Web Projects 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. Pour plus d’informations sur les options d’authentification, consultez ASP.NET Identity plus loin dans ce document.For more information about the new authentication options, see ASP.NET Identity later in this document.

Génération de modèles automatique ASP.NETASP.NET Scaffolding

Génération de modèles automatique ASP.NET est une infrastructure de génération de code pour les applications Web ASP.NET.ASP.NET Scaffolding is a code generation framework for ASP.NET Web applications. Il est facile d’ajouter du code réutilisable à votre projet qui interagit avec un modèle de données.It makes it easy to add boilerplate code to your project that interacts with a data model.

Dans les versions précédentes de Visual Studio, génération de modèles automatique a été limitée pour les projets ASP.NET MVC.In previous versions of Visual Studio, scaffolding was limited to ASP.NET MVC projects. Avec Visual Studio 2013, vous pouvez maintenant utiliser la génération de modèles automatique pour un projet ASP.NET, y compris les Web Forms.With Visual Studio 2013, you can now use scaffolding for any ASP.NET project, including Web Forms. Visual Studio 2013 ne prend pas en charge les pages de génération pour un projet Web Forms, mais vous pouvez toujours utiliser la structure avec les Web Forms en ajoutant des dépendances MVC au projet.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. Prise en charge pour la génération de pages pour Web Forms sera ajoutée dans une prochaine mise à jour.Support for generating pages for Web Forms will be added in a future update.

Lorsque vous utilisez la génération de modèles automatique, nous nous assurer que tous les requis dépendances sont installées dans le projet.When using scaffolding, we ensure that all required dependencies are installed in the project. Par exemple, si vous commencez avec un projet Web Forms ASP.NET et ensuite utilisez la structure pour ajouter un contrôleur d’API Web, références et les packages NuGet requis sont ajoutés à votre projet automatiquement.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.

Pour ajouter la structure MVC à un projet Web Forms, ajoutez un nouvel élément structuré et sélectionnez des dépendances MVC 5 dans la boîte de dialogue.To add MVC scaffolding to a Web Forms project, add a New Scaffolded Item and select MVC 5 Dependencies in the dialog window. Il existe deux options pour la génération de modèles automatique MVC ; Minimale et complète.There are two options for scaffolding MVC; Minimal and Full. Si vous sélectionnez Minimal, uniquement les packages NuGet et les références pour ASP.NET MVC sont ajoutés à votre projet.If you select Minimal, only the NuGet packages and references for ASP.NET MVC are added to your project. Si vous sélectionnez l’option complet, les dépendances minimales sont ajoutés, ainsi que les fichiers de contenu requis pour un projet MVC.If you select the Full option, the Minimal dependencies are added, as well as the required content files for an MVC project.

Prise en charge de la génération de modèles automatique des contrôleurs d’async utilise les nouvelles fonctionnalités asynchrones à partir d’Entity Framework 6.Support for scaffolding async controllers uses the new async features from Entity Framework 6.

Pour plus d’informations et des didacticiels, consultez vue d’ensemble de la génération de modèles automatique ASP.NET.For more information and tutorials, see ASP.NET Scaffolding Overview.

La nouvelle Browser Link fonctionnalité vous permet de connecter plusieurs navigateurs à Visual Studio et de les actualiser tout en cliquant sur un bouton dans la barre d’outils.The new Browser Link feature lets you connect multiple browsers to Visual Studio and refresh them all by clicking a button in the toolbar. Vous pouvez connecter plusieurs navigateurs sur votre site de développement, y compris des émulateurs mobiles et cliquez sur Actualiser pour actualiser tous les navigateurs tous en même temps.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. Lien du navigateur expose également une API pour permettre aux développeurs d’écrire des extensions de lien du navigateur.Browser Link also exposes an API to enable developers to write Browser Link extensions.

En permettant aux développeurs de tirer parti de l’API de lien de navigateur, il devient possible de créer des scénarios très avancés qui traverse les limites entre Visual Studio et n’importe quel navigateur qui est connecté.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 tire parti de l’API pour créer une expérience intégrée entre Visual Studio et les outils de développement du navigateur, à distance le contrôle des émulateurs mobiles et bien plus encore.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.

Améliorations de l’éditeur Web de Visual StudioVisual Studio Web Editor Enhancements

Visual Studio 2013 inclut un nouvel éditeur HTML pour les fichiers Razor et les fichiers HTML dans les applications web.Visual Studio 2013 includes a new HTML editor for Razor files and HTML files in web applications. Le nouvel éditeur HTML fournit un schéma unifié unique basé sur HTML5.The new HTML editor provides a single unified schema based on HTML5. Fin d’accolade automatique, de jQuery UI et AngularJS attribut IntelliSense, l’attribut de regroupement d’IntelliSense, ID et nom de classe Intellisense et autres améliorations, y compris les meilleures performances, la mise en forme et les balises actives.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.

La capture d’écran suivante illustre l’utilisation d’amorçage attribut IntelliSense dans l’éditeur HTML.The following screenshot demonstrates using Bootstrap attribute IntelliSense in the HTML editor.

IntelliSense dans l’éditeur HTML

Visual Studio 2013 est également fourni avec les deux CoffeeScript et moins éditeurs intégrées.Visual Studio 2013 also comes with both CoffeeScript and LESS editors built in. L’éditeur LESS est fourni avec toutes les fonctionnalités intéressantes à partir de l’éditeur CSS et est doté d’Intellisense spécifique pour les variables et les mixins dans tous les moins documents dans le @import chaîne.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.

Prise en charge des applications Azure App Service Web dans Visual StudioAzure App Service Web Apps Support in Visual Studio

Dans Visual Studio 2013 avec le SDK Azure pour .NET 2.2, vous pouvez utiliser Explorateur de serveurs d’interagir directement avec vos applications web à distance.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. Vous pouvez vous connecter à votre compte Azure, créer des applications web, configurer des applications, afficher les journaux en temps réel et bien plus encore.You can sign in to your Azure account, create new web apps, configure apps, view real-time logs, and more. Bientôt peu après le Kit de développement logiciel 2.2 est publié, vous serez en mesure d’exécuter en mode débogage à distance dans Azure.Coming soon after SDK 2.2 is released, you'll be able to run in debug mode remotely in Azure. La plupart des nouvelles fonctionnalités pour Azure App Service Web Apps fonctionne également dans Visual Studio 2012 lorsque vous installez la version actuelle du SDK Azure pour .NET.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.

Pour plus d'informations, reportez-vous aux ressources suivantes :For more information, see the following resources:

Améliorations de la publication sur le WebWeb Publish Enhancements

Visual Studio 2013 inclut des fonctionnalités nouvelles et améliorées de publication Web.Visual Studio 2013 includes new and enhanced Web Publish features. Voici quelques-uns d'entre eux :Here are a few of them:

Pour plus d’informations sur le déploiement de web ASP.NET, consultez le site ASP.NET.For more information about ASP.NET web deployment, see the ASP.NET site.

NuGet 2.7NuGet 2.7

NuGet 2.7 inclut un ensemble complet de nouvelles fonctionnalités qui sont décrites en détail à Notes de publication de NuGet 2.7.NuGet 2.7 includes a rich set of new features which are described in detail at NuGet 2.7 Release Notes.

Cette version de NuGet supprime également la nécessité de fournir un consentement explicite pour la fonctionnalité de restauration de package de NuGet télécharger les packages.This version of NuGet also removes the need to provide explicit consent for NuGet's package restore feature to download packages. Consentement (et la case à cocher associée dans la boîte de dialogue Préférences de NuGet) sont maintenant accordées par l’installation de NuGet.Consent (and the associated checkbox in NuGet's preferences dialog) is now granted by installing NuGet. Restauration des packages simplement fonctionne désormais par défaut.Now package restore simply works by default.

ASP.NET Web FormsASP.NET Web Forms

One ASP.NETOne ASP.NET

Les modèles de projet Web Forms intègrent en toute transparence à la nouvelle expérience de One ASP.NET.The Web Forms project templates integrate seamlessly with the new One ASP.NET experience. Vous pouvez ajouter la prise en charge de MVC et API Web à votre projet Web Forms, et vous pouvez configurer l’authentification à l’aide de l’Assistant de création de projet One ASP.NET.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. Pour plus d’informations, consultez Creating ASP.NET Web Projects in Visual Studio 2013.For more information, see Creating ASP.NET Web Projects in Visual Studio 2013.

ASP.NET IdentityASP.NET Identity

Les modèles de projet Web Forms prend en charge la nouvelle infrastructure d’identité ASP.NET.The Web Forms project templates support the new ASP.NET Identity framework. En outre, les modèles prennent désormais en charge la création d’un projet d’intranet Web Forms.In addition, the templates now support creation of a Web Forms intranet project. Pour plus d’informations, consultez méthodes d’authentification dans Creating ASP.NET Web Projects in Visual Studio 2013.For more information, see Authentication Methods in Creating ASP.NET Web Projects in Visual Studio 2013.

Programme d’amorçageBootstrap

Utilisent les modèles Web Forms Bootstrap pour fournir une élégante et réactive apparence que vous pouvez facilement personnaliser.The Web Forms templates use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. Pour plus d’informations, consultez Bootstrap dans les modèles de projet web Visual Studio 2013.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

Les modèles de projet Web MVC intègrent en toute transparence à la nouvelle expérience de One ASP.NET.The Web MVC project templates integrate seamlessly with the new One ASP.NET experience. Vous pouvez personnaliser votre projet MVC et configurer l’authentification à l’aide de l’Assistant de création de projet One ASP.NET.You can customize your MVC project and configure authentication using the One ASP.NET project creation wizard. Vous trouverez un didacticiel d’introduction à ASP.NET MVC 5 dans mise en route avec ASP.NET MVC 5.An introductory tutorial to ASP.NET MVC 5 can be found at Getting Started with ASP.NET MVC 5.

Pour plus d’informations sur la mise à niveau des projets MVC 4 vers MVC 5, consultez comment mettre à jour un ASP.NET MVC 4 et le projet d’API Web ASP.NET MVC 5 et API Web 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

Les modèles de projet MVC ont été mis à jour pour utiliser ASP.NET Identity pour l’authentification et de gestion des identités.The MVC project templates have been updated to use ASP.NET Identity for authentication and identity management. Vous trouverez un didacticiel présentant l’authentification Facebook et Google et la nouvelle API d’appartenance dans créer une application ASP.NET MVC 5 avec Facebook et Google OAuth2 et OpenID Sign-on et créer une application ASP.NET MVC avec authentification et Base de données SQL et les déployer sur Azure App Service.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.

Programme d’amorçageBootstrap

Le modèle de projet MVC a été mis à jour pour utiliser Bootstrap pour fournir une élégante et réactive apparence que vous pouvez facilement personnaliser.The MVC project template has been updated to use Bootstrap to provide a sleek and responsive look and feel that you can easily customize. Pour plus d’informations, consultez Bootstrap dans les modèles de projet web Visual Studio 2013.For more information, see Bootstrap in the Visual Studio 2013 web project templates.

Filtres d’authentificationAuthentication filters

Filtres d’authentification sont un nouveau type de filtre dans ASP.NET MVC qui s’exécutent avant les filtres d’autorisation dans le pipeline ASP.NET MVC et vous permettent de spécifier l’authentification logique d’une action, par contrôleur, ou dans le monde entier pour tous les contrôleurs.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. Filtres d’authentification traitement les informations d’identification dans la demande et fournissent un principal correspondant.Authentication filters process credentials in the request and provide a corresponding principal. Filtres d’authentification peuvent également ajouter des demandes d’authentification en réponse aux demandes non autorisées.Authentication filters can also add authentication challenges in response to unauthorized requests.

Remplacements de filtreFilter overrides

Vous pouvez maintenant remplacer les filtres à appliquer à une méthode d’action donné ou un contrôleur en spécifiant un filtre de remplacement.You can now override which filters apply to a given action method or controller by specifying an override filter. Filtres de remplacement de spécifier un ensemble de types de filtre ne doit pas être exécuté pour une étendue donnée (action ou contrôleur).Override filters specify a set of filter types that should not be run for a given scope (action or controller). Cela vous permet de vous permettent de configurer des filtres qui s’appliquent globalement mais puis exclure certains filtres globaux de l’application à des actions spécifiques ou des contrôleurs.This allows you to configure filters that apply globally but then exclude certain global filters from applying to specific actions or controllers.

Routage par attributsAttribute routing

ASP.NET MVC prend désormais en charge le routage par attributs, grâce à une contribution par Tim McCall, l’auteur de http://attributerouting.net .ASP.NET MVC now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. Avec le routage par attributs, vous pouvez spécifier vos itinéraires en annotant vos actions et les contrôleurs.With attribute routing you can specify your routes by annotating your actions and controllers.

API web ASP.NET 2ASP.NET Web API 2

Routage par attributsAttribute routing

API Web ASP.NET prend désormais en charge le routage par attributs, grâce à une contribution par Tim McCall, l’auteur de http://attributerouting.net .ASP.NET Web API now supports attribute routing, thanks to a contribution by Tim McCall, the author of http://attributerouting.net. Avec le routage par attributs, vous pouvez spécifier des itinéraires de votre API Web en annotant vos actions et les contrôleurs comme suit :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) { } 
}

Routage par attributs vous donne davantage de contrôle sur les URI dans votre API web.Attribute routing gives you more control over the URIs in your web API. Par exemple, vous pouvez facilement définir une hiérarchie de ressources à l’aide d’un contrôleur d’API unique :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) { } 
}

Routage par attributs également fournit une syntaxe pratique pour spécifier des paramètres facultatifs, les valeurs par défaut et les contraintes de routage :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}")]

Pour plus d’informations sur le routage par attributs, consultez routage par attributs dans Web API 2.For more information about attribute routing, see Attribute Routing in Web API 2.

OAuth 2.0OAuth 2.0

Les modèles de projet API Web et des applications à Page unique prennent désormais en charge l’autorisation à l’aide d’OAuth 2.0.The Web API and Single Page Application project templates now support authorization using OAuth 2.0. OAuth 2.0 est une infrastructure d’autorisation d’accès client aux ressources protégées.OAuth 2.0 is a framework for authorizing client access to protected resources. Il fonctionne pour une variété de clients, y compris les navigateurs et appareils mobiles.It works for a variety of clients including browsers and mobile devices.

Prise en charge d’OAuth 2.0 est basé sur le nouveau sécurité intergiciel (middleware) fournis par les composants OWIN de Microsoft pour l’authentification du porteur et le rôle de serveur d’autorisation de mise en œuvre.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. Vous pouvez également les clients peuvent être autorisés à l’aide d’un serveur d’autorisation d’organisation, comme Azure Active Directory ou AD FS dans Windows Server 2012 R2.Alternatively, clients can be authorized using an organizational authorization server, such as Azure Active Directory or ADFS in Windows Server 2012 R2.

Améliorations d’ODataOData Improvements

Développez de prise en charge pour $select, $, $batch et $valueSupport for $select, $expand, $batch, and $value

ASP.NET Web API OData prend désormais en charge complète pour $select, $expand et $value.ASP.NET Web API OData now has full support for $select, $expand, and $value. Vous pouvez également utiliser $batch de demande de traitement par lot et le traitement des ensembles de modifications.You can also use $batch for request batching and processing of change sets.

$Select et $développez options vous permettent de changer la forme des données qui sont retournées à partir d’un point de terminaison OData.The $select and $expand options let you change the shape of the data that is returned from an OData endpoint. Pour plus d’informations, consultez présentation $select et $étendent la prise en charge dans Web API OData.For more information, see Introducing $select and $expand support in Web API OData.

Extensibilité amélioréeImproved extensibility

Les formateurs OData sont désormais extensibles.The OData formatters are now extensible. Vous pouvez ajouter les métadonnées d’entrée Atom, prend en charge les entrées de lien stream et média nommées, ajouter des annotations d’instance et personnaliser la façon dont les liens sont générés.You can add Atom entry metadata, support named stream and media link entries, add instance annotations, and customize how links are generated.

Prise en charge sans typeType-less support

Vous pouvez maintenant générer des services OData sans avoir à définir les types CLR pour vos types d’entité.You can now build OData services without needing to define CLR types for your entity types. Au lieu de cela, vos contrôleurs OData peuvent prendre ou retournent des instances de IEdmObject, qui sont les formateurs OData sérialiser/désérialiser.Instead, your OData controllers can take or return instances of IEdmObject, which are the OData formatters serialize/deserialize.

Réutiliser un modèle existantReuse an existing model

Si vous avez déjà un entity data model (EDM) existant, vous pouvez maintenant réutiliser il directement, au lieu de devoir créer un nouveau.If you already have an existing entity data model (EDM), you can now reuse it directly, instead of having to build a new one. Par exemple, si vous utilisez Entity Framework, vous pouvez utiliser le modèle EDM EF génère pour vous.For example, if you are using Entity Framework, you can use the EDM that EF builds for you.

Demander le traitement par lotRequest Batching

Demande de traitement par lot combine plusieurs opérations en une seule requête HTTP POST, pour réduire le trafic réseau et de fournir une simple, moins l’interface utilisateur bavardes.Request batching combines multiple operations into a single HTTP POST request, to reduce network traffic and provide a smoother, less chatty user interface. API Web ASP.NET prend désormais en charge plusieurs stratégies de demande de traitement par lot :ASP.NET Web API now supports several strategies for request batching:

  • Utilisez le point de terminaison $batch d’un service OData.Use the $batch endpoint of an OData service.
  • Empaqueter plusieurs requêtes dans une seule requête en plusieurs parties MIME.Package multiple requests into a single MIME multipart request.
  • Utiliser un format personnalisé de traitement par lot.Use a custom batching format.

Pour activer la demande de traitement par lot, ajoutez simplement un itinéraire avec un gestionnaire de traitement par lot à votre configuration de l’API Web :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)); 
    } 
}

Vous pouvez également contrôler si des demandes ou exécutées séquentiellement ou dans n’importe quel ordre.You can also control whether requests or executed sequentially or in any order.

Client d’API Web ASP.NET portablePortable ASP.NET Web API Client

Vous pouvez maintenant utiliser le Client de API Web ASP.NET pour créer des bibliothèques de classes portables qui fonctionnent ensemble de vos applications Windows Store et Windows Phone 8.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. Vous pouvez également créer des formateurs portables qui peuvent être partagées entre client et serveur.You can also create portable formatters that can be shared across client and server.

Testabilité amélioréeImproved Testability

Web API 2 facilite grandement unité tester vos contrôleurs d’API.Web API 2 makes it much easier to unit test your API controllers. Simplement instancier votre contrôleur d’API avec votre message de demande et de la configuration, puis appelez la méthode d’action que vous souhaitez tester.Just instantiate your API controller with your request message and configuration, and then call the action method you wish to test. Il est également facile de simuler la UrlHelper (classe), pour les méthodes d’action qui effectuent la génération de lien.It is also easy to mock the UrlHelper class, for action methods that perform link generation.

IHttpActionResultIHttpActionResult

Vous pouvez désormais implémenter IHttpActionResult pour encapsuler le résultat de vos méthodes d’action API Web.You can now implement IHttpActionResult to encapsulate the result of your Web API action methods. Un IHttpActionResult retourné à partir d’une méthode d’action API Web est exécutée par le runtime de l’API Web ASP.NET pour produire le message de réponse résultant.An IHttpActionResult returned from a Web API action method is executed by the ASP.NET Web API runtime to produce the resultant response message. Un IHttpActionResult peut être retourné à partir de toute action de l’API Web pour simplifier l’unité de test de votre implémentation de l’API Web.An IHttpActionResult can be returned from any Web API action to simplify unit testing of your Web API implementation. Pour plus de commodité que plusieurs IHttpActionResult implémentations sont fournies prêtes à l’emploi, y compris les résultats pour retourner des codes d’état spécifiques, mise en forme de contenu ou la négociation de contenu des réponses.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

La nouvelle HttpRequestContext effectue le suivi de n’importe quel état qui est lié à la demande, mais n’est pas immédiatement disponible à partir de la demande.The new HttpRequestContext tracks any state that is tied to the request but is not immediately available from the request. Par exemple, vous pouvez utiliser la HttpRequestContext pour obtenir des données d’itinéraire, le principal associé à la demande, le certificat client, le UrlHelper et la racine du chemin d’accès virtuel.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. Vous pouvez facilement créer un HttpRequestContext des fins de test d’unité.You can easily create an HttpRequestContext for unit testing purposes.

Étant donné que l’entité de sécurité pour la demande est transmise à la demande au lieu d’utiliser Thread.CurrentPrincipal, le principal est désormais disponible tout au long de la durée de vie de la demande s’il est dans le pipeline de l’API Web.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

Grâce à une autre grande contribution à partir de Brock Allen, ASP.NET prend désormais entièrement en charge Cross-Origin demande de partage (CORS).Thanks to another great contribution from Brock Allen, ASP.NET now fully supports Cross Origin Request Sharing (CORS).

La sécurité du navigateur empêche une page web d’effectuer des demandes AJAX vers un autre domaine.Browser security prevents a web page from making AJAX requests to another domain. CORS est une norme W3C qui permet à un serveur d’assouplir la stratégie de même origine.CORS is a W3C standard that allows a server to relax the same-origin policy. À l’aide de CORS, un serveur peut autoriser explicitement certaines demandes cross-origin lors du refus d’autres.Using CORS, a server can explicitly allow some cross-origin requests while rejecting others.

API Web 2 prend désormais en charge CORS, y compris la gestion automatique des requêtes préliminaires.Web API 2 now supports CORS, including automatic handling of preflight requests. Pour plus d’informations, consultez activation des demandes de Cross-Origin dans ASP.NET Web API.For more information, see Enabling Cross-Origin Requests in ASP.NET Web API.

Filtres d’authentificationAuthentication Filters

Filtres d’authentification sont un nouveau type de filtre dans les API Web ASP.NET qui s’exécutent avant les filtres d’autorisation dans le pipeline de l’API Web ASP.NET et vous permettent de spécifier l’authentification logique d’une action, par contrôleur, ou dans le monde entier pour tous les contrôleurs.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. Filtres d’authentification traitement les informations d’identification dans la demande et fournissent un principal correspondant.Authentication filters process credentials in the request and provide a corresponding principal. Filtres d’authentification peuvent également ajouter des demandes d’authentification en réponse aux demandes non autorisées.Authentication filters can also add authentication challenges in response to unauthorized requests.

Substitutions de filtreFilter Overrides

Vous pouvez maintenant remplacer les filtres à appliquer à une méthode d’action donné ou un contrôleur, en spécifiant un filtre de remplacement.You can now override which filters apply to a given action method or controller, by specifying an override filter. Filtres de remplacement de spécifier un ensemble de types de filtre ne doit pas s’exécuter pour une étendue donnée (action ou contrôleur).Override filters specify a set of filter types that should not run for a given scope (action or controller). Cela vous permet à ajouter des filtres globaux, mais ensuite exclure certaines à partir des actions spécifiques ou des contrôleurs.This allows you to add global filters, but then exclude some from specific actions or controllers.

Intégration OWINOWIN Integration

API Web ASP.NET désormais entièrement prend en charge OWIN et peut être exécuté sur n’importe quel hôte compatible OWIN.ASP.NET Web API now fully supports OWIN and can be run on any OWIN capable host. Est également inclus un HostAuthenticationFilter qui assure une intégration avec le système d’authentification OWIN.Also included is a HostAuthenticationFilter that provides integration with the OWIN authentication system.

Avec l’intégration de OWIN, vous pouvez Self-host API Web dans votre propre processus en même temps que d’autres intergiciels (middleware) OWIN, telles que SignalR.With OWIN integration, you can self-host Web API in your own process alongside other OWIN middleware, such as SignalR. Pour plus d’informations, consultez OWIN d’utilisation pour auto-héberger ASP.NET Web API.For more information, see Use OWIN to Self-Host ASP.NET Web API.

SignalR ASP.NET 2.0ASP.NET SignalR 2.0

Les sections suivantes décrivent les fonctionnalités de SignalR 2.0.The following sections describe features of SignalR 2.0.

Pour obtenir un exemple de mise à niveau d’un projet 1.x existant vers SignalR 2.0, consultez la mise à niveau un SignalR 1.x projet.For an example of how to upgrade an existing 1.x project to SignalR 2.0, see Upgrading a SignalR 1.x Project.

Basée sur OWINBuilt on OWIN

SignalR 2.0 repose entièrement sur OWIN (l’Open Web Interface pour .NET).SignalR 2.0 is built completely on OWIN (the Open Web Interface for .NET). Cette modification rend le processus d’installation pour SignalR beaucoup plus cohérente entre les applications SignalR auto-hébergé et hébergé sur le web, mais doit également un nombre de modifications de l’API.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 et MapConnection sont désormais MapSignalRMapHubs and MapConnection are now MapSignalR

Pour la compatibilité avec les normes OWIN, ces méthodes ont été renommées MapSignalR.For compatibility with OWIN standards, these methods have been renamed to MapSignalR. MapSignalR appelée sans paramètres mappera tous les concentrateurs (en tant que MapHubs dans la version 1.x) ; pour mapper individuels PersistentConnection objets, spécifiez le type de connexion en tant que le paramètre de type et l’extension d’URL pour la connexion en tant que le premier 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.

Le MapSignalR méthode est appelée dans une classe de démarrage Owin.The MapSignalR method is called in an Owin startup class. Visual Studio 2013 contient un nouveau modèle pour une classe de démarrage Owin ; Pour utiliser ce modèle, procédez comme suit :Visual Studio 2013 contains a new template for an Owin startup class; to use this template, do the following:

  1. Avec le bouton droit sur le projetRight-click on the project
  2. Sélectionnez ajouter, un nouvel élément...Select Add, New Item...
  3. Sélectionnez classe de démarrage Owin.Select Owin Startup class. Nommez la nouvelle classe Startup.cs.Name the new class Startup.cs.

Dans un application Web, la classe de démarrage de Owin contenant le MapSignalR méthode est ensuite ajoutée au processus de démarrage de Owin à l’aide d’une entrée dans le nœud de paramètres d’application du fichier Web.Config, comme indiqué ci-dessous.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.

Dans un auto-hébergé application, la classe de démarrage est passée comme paramètre de type de la WebApp.Start (méthode).In a Self-hosted application, the Startup class is passed as the type parameter of the WebApp.Start method.

Mappage des hubs et connexions dans SignalR 1.x (depuis le fichier d’application globale dans une application web) :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");
}

Mappage des hubs et connexions dans 2.0 SignalR (à partir d’un fichier de classe de démarrage Owin) :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");
        }
    }
}

Dans un auto-hébergé application, la classe de démarrage est passée comme paramètre de type pour le WebApp.Start (méthode), comme indiqué ci-dessous.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();
}

Prise en charge des domainesCross-Domain Support

Dans SignalR 1.x, des requêtes entre domaines ont été contrôlé par un indicateur EnableCrossDomain unique.In SignalR 1.x, cross domain requests were controlled by a single EnableCrossDomain flag. Cet indicateur contrôlé demandes JSONP et CORS.This flag controlled both JSONP and CORS requests. Pour une flexibilité accrue, tous les CORS prennent en charge a été supprimée à partir du composant serveur de SignalR (clients JavaScript toujours utiliseront CORS normalement s’il est détecté que le navigateur prend en charge), et nouvel intergiciel (middleware) OWIN soit devenue disponible pour prendre en charge ces scénarios.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.

Dans SignalR 2.0, si JSONP est requis sur le client (pour prendre en charge les demandes inter-domaines dans les navigateurs plus anciens), il doit être activée explicitement en définissant EnableJSONP sur le HubConfiguration objet true, comme illustré ci-dessous.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 est désactivée par défaut, car il est moins sécurisé que CORS.JSONP is disabled by default, as it is less secure than CORS.

Pour ajouter le nouvel intergiciel (middleware) CORS dans SignalR 2.0, ajoutez le Microsoft.Owin.Cors bibliothèque à votre projet, puis appelez UseCors avant votre intergiciel SignalR, comme indiqué dans la section ci-dessous.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.

Ajout de Microsoft.Owin.Cors à votre projet: Pour installer cette bibliothèque, exécutez la commande suivante dans la Console du Gestionnaire de Package :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

Cette commande ajoutera le 2.0.0 version du package à votre projet.This command will add the 2.0.0 version of the package to your project.

Appeler UseCorsCalling UseCors

Les extraits de code suivants montrent comment implémenter des connexions inter-domaines dans SignalR 1.x et 2.0.The following code snippets demonstrate how to implement cross-domain connections in SignalR 1.x and 2.0.

Implémentation de demandes inter-domaines dans SignalR 1.x (à partir du fichier d’application globale)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);
}

Implémentation de demandes inter-domaines dans 2.0 SignalR (à partir d’un fichier de code c#)Implementing cross-domain requests in SignalR 2.0 (from a C# code file)

Le code suivant montre comment activer CORS ou JSONP dans un projet SignalR 2.0.The following code demonstrates how to enable CORS or JSONP in a SignalR 2.0 project. Cet exemple de code utilise Map et RunSignalR au lieu de MapSignalR, de sorte que l’intergiciel (middleware) CORS s’exécute uniquement pour les demandes de SignalR qui nécessitent la prise en charge CORS (plutôt que pour tout le trafic sur le chemin spécifié dans MapSignalR.) Map peut également être utilisé pour n’importe quel autre intergiciel (middleware) qui doit s’exécuter pour un préfixe d’URL spécifique, plutôt que pour l’application entière.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 et Android prennent en charge par le biais de MonoTouch et MonoDroidiOS and Android support via MonoTouch and MonoDroid

Prise en charge a été ajoutée pour les clients iOS et Android à l’aide de composants MonoTouch et MonoDroid à partir de la bibliothèque Xamarin.Support has been added for iOS and Android clients using MonoTouch and MonoDroid components from the Xamarin library. Pour plus d’informations sur leur utilisation, consultez à l’aide des composants Xamarin.For more information on how to use them, see Using Xamarin Components. Ces composants seront disponibles dans le Xamarin Store lorsque la version RTW de SignalR est disponible.These components will be available in the Xamarin Store when the SignalR RTW release is available.

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

Pour mieux facilitent le développement multiplateforme, le Silverlight, WinRT et les clients Windows Phone ont été remplacés par un seul client .NET portable qui prend en charge les plateformes suivantes :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 pour les applications du Windows Store)WinRT (.NET for Windows Store Apps)
  • Windows Phone 8Windows Phone 8

Nouveau Package Self-HostNew Self-Host Package

Il existe désormais un package NuGet pour faciliter la prise en main auto-hébergement de SignalR (SignalR les applications qui sont hébergées dans un processus ou autre application, plutôt que hébergé sur un serveur web).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). Pour mettre à niveau un projet Self-host généré avec SignalR 1.x, supprimer le package Microsoft.AspNet.SignalR.Owin et ajoutez le package 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. Pour plus d’informations sur la mise en route avec le package Self-host, consultez didacticiel : Auto-hébergement de SignalR.For more information on getting started with the self-host package, see Tutorial: SignalR Self-Host.

Prise en charge du serveur de compatibilité descendanteBackward-compatible server support

Dans les versions précédentes de SignalR, les versions de package SignalR utilisé dans le client et le serveur que se devait d’être identiques.In previous versions of SignalR, the versions of the SignalR package used in the client and the server needed to be identical. Pour prendre en charge les applications client lourd qui seraient difficiles à mettre à jour, SignalR 2.0 prend désormais en charge l’à l’aide d’une version plus récente de serveur avec un client plus ancien.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. Remarque : SignalR 2.0 ne prend pas en charge les serveurs créés avec des versions plus anciennes avec nouveaux clients.Note: SignalR 2.0 does not support servers built with older versions with newer clients.

Supprimer la prise en charge du serveur pour .NET 4.0Removed server support for .NET 4.0

SignalR 2.0 a supprimé la prise en charge pour l’interopérabilité de serveur avec .NET 4.0.SignalR 2.0 has dropped support for server interoperability with .NET 4.0. .NET 4.5 doit être utilisé avec les serveurs de SignalR 2.0..NET 4.5 must be used with SignalR 2.0 servers. Il existe toujours un client .NET 4.0 pour SignalR 2.0.There is still a .NET 4.0 client for SignalR 2.0.

Envoi d’un message à une liste de clients et de groupesSending a message to a list of clients and groups

Dans SignalR 2.0, il est possible d’envoyer un message à l’aide d’une liste de client et ID de groupe.In SignalR 2.0, it's possible to send a message using a list of client and group IDs. Les extraits de code suivants montrent comment effectuer cette opération.The following code snippets demonstrate how to do this.

Envoi d’un message à une liste de clients et des groupes à l’aide de 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);
    }
}

Envoi d’un message à une liste de clients et des groupes à l’aide de 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();
    }
}

Envoi d’un message à un utilisateur spécifiqueSending a message to a specific user

Cette fonctionnalité permet aux utilisateurs de spécifier quel est le nom d’utilisateur basé sur un IRequest via une nouvelle interface IUserIdProvider :This feature allows users to specify what the userId is based on an IRequest via a new interface IUserIdProvider:

L’interface IUserIdProviderThe IUserIdProvider interface

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

Par défaut il y aura une implémentation qui utilise IPrincipal.Identity.Name l’utilisateur comme nom d’utilisateur.By default there will be an implementation that uses the user's IPrincipal.Identity.Name as the user name.

Dans les hubs, vous serez en mesure d’envoyer des messages à ces utilisateurs via une nouvelle API :In hubs, you'll be able to send messages to these users via a new API:

À l’aide de l’API Clients.UserUsing the Clients.User API

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

Une meilleure prise en charge de gestion des erreursBetter Error Handling Support

Les utilisateurs peuvent désormais lever HubException à partir de n’importe quel appel de concentrateur.Users can now throw HubException from any hub invocation. Le constructeur de la HubException peut prendre un message de type chaîne et un objet des données d’erreur supplémentaires.The constructor of the HubException can take a string message and an object extra error data. SignalR automatique-sérialiser l’exception et l’envoyer au client sur laquelle il est utilisé pour l’appel de méthode de concentrateur de rejet ou d’échec.SignalR will auto-serialize the exception and send it to the client where it will be used to reject/fail the hub method invocation.

Le afficher les exceptions détaillées hub paramètre n’a aucune incidence sur HubException qui est envoyé au client ou non ; il est toujours envoyé.The show detailed hub exceptions setting has no bearing on HubException being sent back to the client or not; it is always sent.

Code côté serveur illustrant l’envoi d’une HubException au clientServer-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);
    }
}

Code JavaScript client illustrant la réponse à une HubException envoyée depuis le serveurJavaScript 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);
                }
            });

Code de client .NET illustrant répond à une HubException envoyée à partir du serveur.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);
}

Unité plus facile de hubs de testEasier unit testing of hubs

SignalR 2.0 inclut une interface appelée IHubCallerConnectionContext sur les concentrateurs qui les rend plus facile de créer des appels de côté client fictif.SignalR 2.0 includes an interface called IHubCallerConnectionContext on Hubs that makes it easier to create mock client side invocations. Les extraits de code suivants illustrent l’utilisation de cette interface avec des ateliers de test populaires xUnit.net et moq.The following code snippets demonstrate using this interface with popular test harnesses xUnit.net and moq.

Tests unitaires SignalR avec 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);
}

Tests unitaires SignalR avec 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();

Gestion des erreurs de JavaScriptJavaScript error handling

Dans SignalR 2.0, tous les rappels de la gestion des erreurs JavaScript retournent des objets d’erreur JavaScript au lieu de chaînes brutes.In SignalR 2.0, all JavaScript error handling callbacks return JavaScript error objects instead of raw strings. Cela permet de SignalR transférer les informations plus riches à vos gestionnaires d’erreurs.This allows SignalR to flow richer information to your error handlers. Vous pouvez obtenir l’exception interne à partir de la source propriété de l’erreur.You can get the inner exception from the source property of the error.

Code JavaScript client qui gère l’exception Start.FailJavaScript 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

Nouveau système d’appartenance ASP.NETNew ASP.NET Membership System

ASP.NET Identity est le nouveau système d’appartenance pour les applications ASP.NET.ASP.NET Identity is the new membership system for ASP.NET applications. ASP.NET Identity vous permet de facilement intégrer des données de profil d’utilisateur avec les données d’application.ASP.NET Identity makes it easy to integrate user-specific profile data with application data. ASP.NET Identity vous permet également de choisir le modèle de persistance pour les profils utilisateur dans votre application.ASP.NET Identity also allows you to choose the persistence model for user profiles in your application. Vous pouvez stocker les données dans une base de données SQL Server ou un autre magasin de données, y compris les magasins de données NoSQL telles que les Tables de stockage Azure.You can store the data in a SQL Server database or another data store, including NoSQL data stores such as Azure Storage Tables. Pour plus d’informations, consultez comptes d’utilisateur individuels dans Creating ASP.NET Web Projects in Visual Studio 2013.For more information, see Individual User Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

Authentification basée sur les revendicationsClaims-based authentication

ASP.NET prend désormais en charge l’authentification basée sur les revendications, où l’identité de l’utilisateur est représentée comme un ensemble de revendications à partir d’un émetteur approuvé.ASP.NET now supports claims-based authentication, where the user's identity is represented as a set of claims from a trusted issuer. Les utilisateurs peuvent être authentifiés à l’aide d’un nom d’utilisateur et le mot de passe mis à jour dans une base de données d’application ou à l’aide de fournisseurs d’identité sociale (par exemple : Microsoft comptes, Facebook, Google, Twitter), ou à l’aide de comptes de société via Azure Active Directory ou 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).

Intégration avec Azure Active Directory et Windows Server Active DirectoryIntegration with Azure Active Directory and Windows Server Active Directory

Vous pouvez désormais créer des projets ASP.NET qui utilisent Azure Active Directory ou Windows Server Active Directory (AD) pour l’authentification.You can now create ASP.NET projects that use Azure Active Directory or Windows Server Active Directory (AD) for authentication. Pour plus d’informations, consultez comptes professionnels dans Creating ASP.NET Web Projects in Visual Studio 2013.For more information, see Organizational Accounts in Creating ASP.NET Web Projects in Visual Studio 2013.

Intégration OWINOWIN Integration

Authentification ASP.NET est désormais basée sur l’intergiciel OWIN qui peut être utilisé sur n’importe quel hôte OWIN.ASP.NET authentication is now based on OWIN middleware that can be used on any OWIN-based host. Pour plus d’informations sur OWIN, consultez la rubrique suivante des composants Microsoft OWIN section.For more information about OWIN, see the following Microsoft OWIN Components section.

Composants Microsoft OWINMicrosoft OWIN Components

Open Web Interface pour .NET (OWIN) définit une abstraction entre les serveurs web de .NET et des applications web.Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN dissocie l’application web à partir du serveur, rendre indépendant du web applications hôte.OWIN decouples the web application from the server, making web applications host-agnostic. Par exemple, vous pouvez héberger une application web basée sur OWIN dans IIS ou auto-hébergée dans un processus personnalisé.For example, you can host an OWIN-based web application in IIS or self-host it in a custom process.

Modifications introduites dans les composants Microsoft OWIN (également connu sous le projet Katana) incluent nouveaux composants de serveur et l’hôte, nouvelles bibliothèques d’assistance intergiciel (middleware) et des nouveaux intergiciel d’authentification.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.

Pour plus d’informations sur OWIN et Katana, consultez Nouveautés OWIN et Katana.For more information about OWIN and Katana, see What's new in OWIN and Katana.

Remarque : OWIN applications ne peut pas s’exécuter en mode classique IIS ; ils doivent être exécutés en mode intégré.Note: OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

Remarque : OWIN applications doivent être exécutées avec une confiance totale.Note: OWIN applications must be run in full trust.

Ordinateurs hôtes et les nouveaux serveursNew Servers and Hosts

Avec cette version, les nouveaux composants ont été ajoutées pour activer des scénarios d’auto-hébergement.With this release, new components were added to enable self-host scenarios. Ces composants incluent les packages NuGet suivants :These components include the following NuGet packages:

  • Microsoft.Owin.Host.HttpListener.Microsoft.Owin.Host.HttpListener. Fournit un serveur OWIN qui utilise HttpListener pour écouter les requêtes HTTP et les diriger au pipeline OWIN.Provides an OWIN server that uses HttpListener to listen for HTTP requests and direct them into the OWIN pipeline.
  • Microsoft.Owin.Hosting fournit une bibliothèque pour les développeurs qui souhaitent auto-héberger un pipeline OWIN dans un processus personnalisé, par exemple une application console ou un service de Windows.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. Fournit un exécutable autonome qui encapsule Microsoft.Owin.Hosting et vous permet d’héberger automatiquement un pipeline OWIN sans avoir à écrire une application hôte personnalisé.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.

En outre, le Microsoft.Owin.Host.SystemWeb package permet désormais d’intergiciel (middleware) fournir des indications pour la SystemWeb serveur, indiquant que l’intergiciel (middleware) doit être appelée au cours d’une étape du pipeline ASP.NET spécifique.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. Cette fonctionnalité est particulièrement utile pour l’intergiciel d’authentification, qui doit s’exécuter très tôt dans le pipeline ASP.NET.This feature is particularly useful for authentication middleware, which should run early in the ASP.NET pipeline.

Intergiciel (middleware) et les bibliothèques d’assistanceHelper Libraries and Middleware

Bien que vous pouvez écrire des composants OWIN à l’aide uniquement les définitions de fonction et le type de la spécification OWIN, la nouvelle Microsoft.Owin package fournit un ensemble plus convivial d’abstractions.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. Cette solution combine plusieurs packages antérieures (par exemple, Owin.Extensions, Owin.Types) dans un modèle d’objet unique et bien structurée peut ensuite être facilement utilisé par d’autres composants OWIN.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. En fait, la majorité des composants Microsoft OWIN maintenant utiliser ce package.In fact, the majority of Microsoft OWIN components now use this package.

Note

OWIN applications ne peut pas s’exécuter en mode classique IIS ; ils doivent être exécutés en mode intégré.OWIN applications cannot run in IIS classic mode; they must be run in integrated mode.

Note

OWIN applications doivent être exécutées avec une confiance totale.OWIN applications must be run in full trust.

Cette version inclut également le package Microsoft.Owin.Diagnostics, qui inclut des intergiciels (middleware) pour valider une application OWIN en cours d’exécution, ainsi que des intergiciels (middleware) de la page d’erreur pour aider à analyser les échecs.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.

Composants d’authentificationAuthentication Components

Les composants d’authentification suivantes sont disponibles.The following authentication components are available.

  • Microsoft.Owin.Security.ActiveDirectory.Microsoft.Owin.Security.ActiveDirectory. Active l’authentification à l’aide des services d’annuaire sur site ou sur le cloud.Enables authentication using on-premise or cloud-based directory services.
  • Microsoft.Owin.Security.Cookies permet l’authentification à l’aide de cookies.Microsoft.Owin.Security.Cookies Enables authentication using cookies. Ce package s’appelait précédemment Microsoft.Owin.Security.Forms.This package was previously named Microsoft.Owin.Security.Forms.
  • Microsoft.owin.Security.Facebook contient permet l’authentification à l’aide des services de Facebook OAuth.Microsoft.Owin.Security.Facebook Enables authentication using Facebook's OAuth-based service.
  • Microsoft.Owin.Security.Google permet l’authentification à l’aide des services de Google OpenID.Microsoft.Owin.Security.Google Enables authentication using Google's OpenID-based service.
  • Microsoft.Owin.Security.Jwt permet l’authentification à l’aide de jetons JWT.Microsoft.Owin.Security.Jwt Enables authentication using JWT tokens.
  • Microsoft.Owin.Security.MicrosoftAccount permet l’authentification à l’aide de comptes Microsoft.Microsoft.Owin.Security.MicrosoftAccount Enables authentication using Microsoft accounts.
  • Microsoft.Owin.Security.OAuth.Microsoft.Owin.Security.OAuth. Fournit un serveur d’autorisation OAuth, mais aussi les intergiciels (middleware) pour l’authentification des jetons du porteur.Provides an OAuth authorization server as well as middleware for authenticating bearer tokens.
  • Microsoft.Owin.Security.Twitter permet l’authentification à l’aide des services de Twitter OAuth.Microsoft.Owin.Security.Twitter Enables authentication using Twitter's OAuth-based service.

Cette version inclut également le Microsoft.Owin.Cors package, qui contient l’intergiciel (middleware) pour le traitement des demandes HTTP de cross-origin.This release also includes the Microsoft.Owin.Cors package, which contains middleware for processing cross-origin HTTP requests.

Note

Prise en charge pour la signature JWT a été supprimée dans la version finale de Visual Studio 2013.Support for JWT signing has been removed in the final version of Visual Studio 2013.

Entity Framework 6Entity Framework 6

Pour obtenir la liste des nouvelles fonctionnalités et d’autres modifications dans Entity Framework 6, consultez l’historique de Version Entity Framework.For a list of new features and other changes in Entity Framework 6, see Entity Framework Version History.

Razor ASP.NET 3ASP.NET Razor 3

Razor ASP.NET 3 inclut les nouvelles fonctionnalités suivantes :ASP.NET Razor 3 includes the following new features:

  • Prise en charge pour la modification de l’onglet.Support for Tab editing. Auparavant, le mettre le Document commande, la mise en retrait automatique et auto mise en forme dans Visual Studio n’a pas fonctionné correctement lorsque vous utilisez le conserver les tabulations option.Previously, the Format Document command, auto indenting, and auto formatting in Visual Studio did not work correctly when using the Keep Tabs option. Cette modification résout Visual Studio pour le code Razor pour l’onglet mise en forme de mise en forme.This change corrects Visual Studio formatting for Razor code for tab formatting.
  • Prise en charge pour les règles de réécriture d’URL lors de la génération des liens.Support for URL Rewrite rules when generating links.
  • Suppression de l’attribut transparent de sécurité.Removal of security transparent attribute.

    Note

    Cela est une modification avec rupture et rend Razor 3 incompatibles avec MVC 4 et versions antérieures, tandis que Razor 2 n’est pas compatible avec MVC5 ou des assemblys compilés avec MVC5.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 les problèmes corrigés dans Visual Studio 2013 à partir de versions préliminaires ici.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 est une fonctionnalité révolutionnaires dans le .NET Framework 4.5.1 qui modifie radicalement l’expérience utilisateur et le modèle économique pour l’hébergement du grand nombre de sites d’ASP.NET sur un ordinateur unique.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. Pour plus d’informations, consultez ASP.NET App Suspend – réactive partagé d’hébergement web .NET.For more information, see ASP.NET App Suspend – responsive shared .NET web hosting.

Problèmes connus et les modifications avec ruptureKnown Issues and Breaking Changes

Cette section décrit les problèmes connus et les modifications avec rupture dans ASP.NET et Web Tools pour Visual Studio 2013.This section describes known issues and breaking changes in the ASP.NET and Web Tools for Visual Studio 2013.

NuGetNuGet

API web ASP.NETASP.NET Web API

  1. ODataQueryOptions<T>.ApplyTo(IQueryable) ne retourne pas IQueryable<T> toujours, que nous avons ajouté la prise en charge de $select et $expand.ODataQueryOptions<T>.ApplyTo(IQueryable) doesn't return IQueryable<T> always, as we added support for $select and $expand.

    Nos exemples antérieures pour ODataQueryOptions<T> toujours convertir la valeur de retour à partir de ApplyTo à IQueryable<T>.Our earlier samples for ODataQueryOptions<T> always casted the return value from ApplyTo to IQueryable<T>. Celle-ci fonctionnait précédemment, car les options de la requête que nous avons pris en charge précédemment ($filter, $orderby, $skip, $top) ne changent pas la forme de la requête.This worked earlier because the query options that we supported earlier ($filter, $orderby, $skip, $top) do not change the shape of the query. Maintenant que nous prenons en charge $select et $expand la valeur de retour à partir de ApplyTo ne sera pas IQueryable<T> toujours.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;
    }
    

    Si vous utilisez l’exemple de code indiquée précédemment, il continuera de fonctionner si le client n’envoie pas $select et $expand.If you are using the sample code from earlier, it will continue working if the client does not send $select and $expand. Toutefois, si vous souhaitez prendre en charge $select et $expand vous devez modifier le code pour cela.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 ou RequestContext.Url a la valeur null lors d’une demande de lotRequest.Url or RequestContext.Url is null during a batch request

    Dans un scénario de traitement par lot, UrlHelper a la valeur null lors de l’accès à partir de Request.Url ou RequestContext.Url.In a batching scenario, UrlHelper is null when accessed from Request.Url or RequestContext.Url.

    Ce problème est suivi actuellement ici : BatchRequestContext.Url a la valeur null pour le traitement par lots demande.This issue is currently tracked here: BatchRequestContext.Url is null for batching request.

    La solution de contournement pour ce problème consiste à créer une nouvelle instance de UrlHelper, comme dans l’exemple suivant :The workaround for this issue is to create a new instance of UrlHelper, as in the following example:

    Création d’une nouvelle instance de UrlHelperCreating a new instance of UrlHelper

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

ASP.NET MVCASP.NET MVC

  1. Lorsque vous utilisez MVC5 et OrgAuth, si vous avez vues qui effectuent une validation de AntiForgerToken, vous pouvez trouver l’erreur suivante lors de la validation des données à la vue :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:

    Erreur:Error:

    Erreur de serveur dans l’Application '/'.Server Error in '/' Application.

    Une revendication de type «http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'ou'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' n’était pas présent sur le ClaimsIdentity fourni. Pour activer la prise en charge avec l’authentification basée sur les revendications de jeton anti-contrefaçon, vérifiez que le fournisseur de revendications configurée fournit les deux de ces revendications sur les instances ClaimsIdentity qu'il génère. Si le fournisseur de revendications configurée utilise à la place un type de revendication différent comme identificateur unique, il peut être configuré en définissant la propriété statique AntiForgeryConfig.UniqueClaimTypeIdentifier.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.

    Solution de contournement :Workaround:

    Dans Global.asax pour résoudre ce problème, ajoutez la ligne suivante :Add the following line in Global.asax to fix it:

    AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name;

    Ce problème sera résolu pour la prochaine version.This will be fixed for the next release.

  2. Après la mise à niveau une application MVC 4 vers MVC5, générez la solution, puis lancez-le.After upgrading an MVC4 app to MVC5, build the solution and launch it. Vous devez voir l’erreur suivante :You should see the following error:

    [A] System.Web.WebPages.Razor.Configuration.HostSection ne peut pas être casté en [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. Type A provient « System.Web.WebPages.Razor, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Default' à l’emplacement ' 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'. Type B provient « System.Web.WebPages.Razor, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' dans le contexte 'Default' à l’emplacement ' 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'.

    Pour corriger l’erreur ci-dessus, ouvrez tous les les fichiers Web.config (y compris celles figurant dans le dossier Views) dans votre projet, puis procédez comme suit :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. Mettre à jour toutes les occurrences de la version « 4.0.0.0 » de « 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. Mettre à jour toutes les occurrences de la version « 2.0.0.0 » de « System.Web.Helpers », "System.Web.WebPages" et "System.Web.WebPages.Razor" à « 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"

      Par exemple, après avoir apporté les modifications ci-dessus, les liaisons d’assembly doivent ressembler à ceci :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>
      

      Pour plus d’informations sur la mise à niveau des projets MVC 4 vers MVC 5, consultez comment mettre à jour un ASP.NET MVC 4 et le projet d’API Web ASP.NET MVC 5 et API Web 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. Lorsque vous utilisez la validation côté client avec jQuery Unobtrusive Validation, le message de validation est parfois incorrect pour un élément input HTML avec type = 'number'.When using client-side validation with jQuery Unobtrusive Validation, the validation message is sometimes incorrect for an HTML input element with type='number'. L’erreur de validation pour une valeur requise (« âge le champ est obligatoire ») s’affichent quand un nombre non valide est entré au lieu du message correct, qu’un nombre valid est requis.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.

    Ce problème est généralement trouvé avec le code généré automatiquement pour un modèle avec une propriété entière sur les vues Create et Edit.This issue is commonly found with scaffolded code for a model with an integer property on the Create and Edit views.

    Pour contourner ce problème, modifiez l’application d’assistance de l’éditeur à partir de :To work around this issue, change the editor helper from:

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

    À :To:

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

  4. ASP.NET MVC 5 ne gère plus de confiance partielle.ASP.NET MVC 5 no longer supports partial trust. Projets de liaison pour les fichiers binaires MVC ou API Web doivent supprimer le SecurityTransparent attribut et la AllowPartiallyTrustedCallers attribut.Projects linking to the MVC or WebAPI binaries should remove the SecurityTransparent attribute and the AllowPartiallyTrustedCallers attribute. Suppression de ces attributs permet d’éliminer les erreurs du compilateur semblable à celui-ci.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.

    Notez que, comme un effet secondaire de ce que vous ne pouvez pas utiliser des assemblys 4.0 et 5.0 dans la même application.Note, as a side effect of this you cannot use 4.0 and 5.0 assemblies in the same application. Vous devez mettre à jour tous les 5.0.You need to update all of them to 5.0.

Modèle SPA avec l’autorisation de Facebook peut entraîner une instabilité dans Internet Explorer tandis que le site web est hébergée dans la zone intranetSPA Template with Facebook authorization may cause instability in IE while the web site is hosted in intranet zone

Le modèle SPA fournit un journal externe avec Facebook.The SPA template provides external log in with Facebook. Lorsque le projet créé avec le modèle est en cours d’exécution localement, risque de IE à se bloquer la connexion.When the project created with the template is running locally, signing in may cause IE to crash.

Solution :Solution:

  1. Héberger le site web dans la zone internet ; ouHost the web site in internet zone; or

  2. Le scénario de test dans un navigateur autre qu’Internet Explorer.Test the scenario in a browser other than IE.

Web Forms de génération de modèles automatiqueWeb Forms Scaffolding

Génération de modèles automatique Web Forms a été supprimée de VS2013 et sera disponible dans une prochaine mise à jour pour Visual Studio.Web Forms Scaffolding has been removed from VS2013 and will be available in a future update to Visual Studio. Toutefois, vous pouvez toujours utiliser la structure dans un projet Web Forms en ajoutant des dépendances MVC et la génération de génération de modèles automatique pour MVC.However, you can still use scaffolding within a Web Forms project by adding MVC dependencies and generating scaffolding for MVC. Votre projet contient une combinaison de Web Forms et MVC.Your project will contain a combination of Web Forms and MVC.

Pour ajouter MVC à votre projet Web Forms, ajouter un nouvel élément généré automatiquement et sélectionnez des dépendances MVC 5.To add MVC to your Web Forms project, add a new scaffolded item and select MVC 5 Dependencies. Sélectionnez minimales ou complètes selon que vous devez tous les fichiers de contenu, tels que les scripts.Select either Minimal or Full depending on whether you need all of the content files, such as scripts. Ensuite, ajoutez un élément généré automatiquement pour MVC, ce qui crée un contrôleur et les vues dans votre projet.Then, add a scaffolded item for MVC, which will create views and a controller in your project.

MVC et Web API génération de modèles automatique - erreur HTTP 404, erreur introuvableMVC and Web API Scaffolding - HTTP 404, Not Found error

Si une erreur s’est produite lors de l’ajout d’un élément généré automatiquement à un projet, il est possible de que votre projet reste dans un état incohérent.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. Certaines des modifications apportées à être de génération de modèles automatique seront restaurée, mais d’autres modifications, comme les packages NuGet installés, ne seront pas restaurées.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. Si les modifications de configuration de routage sont annulées, les utilisateurs recevront une erreur HTTP 404 lorsque accédant à structurée des éléments.If the routing configuration changes are rolled back, users will receive an HTTP 404 error when navigating to scaffolded items.

Solution de contournement :Workaround:

  • Pour corriger cette erreur pour MVC, ajoutez un nouvel élément généré automatiquement et sélectionnez des dépendances MVC 5 (complète ou minimale).To fix this error for MVC, add a new scaffolded item and select MVC 5 Dependencies (either Minimal or Full). Ce processus sera ajoutez toutes les modifications nécessaires à votre projet.This process will add all of the required changes to your project.

  • Pour corriger cette erreur pour l’API Web :To fix this error for Web API:

    1. Ajoutez la classe WebApiConfig à votre projet.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. Configurer WebApiConfig.Register dans l’Application_méthode Start dans Global.asax comme suit :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