Eseguire la migrazione da API Web ASP.NET a ASP.NET CoreMigrate from ASP.NET Web API to ASP.NET Core

Di Scott Addie e Steve SmithBy Scott Addie and Steve Smith

Un'API Web ASP.NET 4. x è un servizio HTTP che raggiunge un'ampia gamma di client, inclusi browser e dispositivi mobili.An ASP.NET 4.x Web API is an HTTP service that reaches a broad range of clients, including browsers and mobile devices. ASP.NET Core combina i modelli di app per le API Web e MVC di ASP.NET 4. x in un unico modello di programmazione noto come ASP.NET Core MVC.ASP.NET Core combines ASP.NET 4.x's MVC and Web API app models into a single programming model known as ASP.NET Core MVC. Questo articolo illustra i passaggi necessari per eseguire la migrazione dall'API Web ASP.NET 4. x a ASP.NET Core MVC.This article demonstrates the steps required to migrate from ASP.NET 4.x Web API to ASP.NET Core MVC.

Visualizzare o scaricare il codice di esempio (procedura per il download)View or download sample code (how to download)

PrerequisitiPrerequisites

Esaminare il progetto API Web ASP.NET 4. xReview ASP.NET 4.x Web API project

Questo articolo usa il progetto ProductsApp creato in Introduzione con API Web ASP.NET 2.This article uses the ProductsApp project created in Getting Started with ASP.NET Web API 2. In tale progetto, un progetto API Web ASP.NET 4. x di base viene configurato come segue.In that project, a basic ASP.NET 4.x Web API project is configured as follows.

In Global.asax.csviene effettuata una chiamata a WebApiConfig.Register :In Global.asax.cs, a call is made to WebApiConfig.Register:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;

namespace ProductsApp
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    }
}

La WebApiConfig classe si trova nella cartella app_start e dispone di un Register metodo statico:The WebApiConfig class is found in the App_Start folder and has a static Register method:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace ProductsApp
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Classe precedente:The preceding class:

  • Configura il routing degli attributi, sebbene non venga effettivamente utilizzato.Configures attribute routing, although it's not actually being used.
  • Configura la tabella di routing.Configures the routing table. Il codice di esempio prevede che gli URL corrispondano al formato /api/{controller}/{id} , con l' {id} opzione facoltativa.The sample code expects URLs to match the format /api/{controller}/{id}, with {id} being optional.

Le sezioni seguenti illustrano la migrazione del progetto API Web a ASP.NET Core MVC.The following sections demonstrate migration of the Web API project to ASP.NET Core MVC.

Creare il progetto di destinazioneCreate the destination project

Creare una nuova soluzione vuota in Visual Studio e aggiungere il progetto API Web ASP.NET 4. x da migrare:Create a new blank solution in Visual Studio and add the ASP.NET 4.x Web API project to migrate:

  1. Scegliere Nuovo > Progetto dal menu File.From the File menu, select New > Project.
  2. Selezionare il modello di soluzione vuota e selezionare Avanti.Select the Blank Solution template and select Next.
  3. Assegnare alla soluzione il nome WebAPIMigration.Name the solution WebAPIMigration. Selezionare Crea.Select Create.
  4. Aggiungere il progetto ProductsApp esistente alla soluzione.Add the existing ProductsApp project to the solution.

Aggiungere un nuovo progetto API per la migrazione a:Add a new API project to migrate to:

  1. Aggiungere un nuovo progetto di applicazione Web ASP.NET Core alla soluzione.Add a new ASP.NET Core Web Application project to the solution.
  2. Nella finestra di dialogo Configura il nuovo progetto assegnare al progetto il nome ProductsCoree selezionare Crea.In the Configure your new project dialog, Name the project ProductsCore, and select Create.
  3. Nella finestra di dialogo Crea una nuova applicazione Web ASP.NET Core verificare che siano selezionati .net Core e ASP.NET Core 3,1 .In the Create a new ASP.NET Core Web Application dialog, confirm that .NET Core and ASP.NET Core 3.1 are selected. Selezionare il modello di progetto API e scegliere Crea.Select the API project template, and select Create.
  4. Rimuovere i file di esempio weatherforecast.cs e Controllers/WeatherForecastController. cs dal nuovo progetto ProductsCore .Remove the WeatherForecast.cs and Controllers/WeatherForecastController.cs example files from the new ProductsCore project.

La soluzione ora contiene due progetti.The solution now contains two projects. Le sezioni seguenti illustrano come eseguire la migrazione del contenuto del progetto ProductsApp al progetto ProductsCore .The following sections explain migrating the ProductsApp project's contents to the ProductsCore project.

Eseguire la migrazione della configurazioneMigrate configuration

ASP.NET Core non utilizza la cartella app_start o il file Global. asax .ASP.NET Core doesn't use the App_Start folder or the Global.asax file. Il file Web. config viene inoltre aggiunto in fase di pubblicazione.Additionally, the web.config file is added at publish time.

La classe Startup:The Startup class:

  • Sostituisce Global. asax.Replaces Global.asax.
  • Gestisce tutte le attività di avvio dell'app.Handles all app startup tasks.

Per altre informazioni, vedere Avvio dell'app in ASP.NET Core.For more information, see Avvio dell'app in ASP.NET Core.

Eseguire la migrazione di modelli e controllerMigrate models and controllers

Il codice seguente mostra l'oggetto ProductsController da aggiornare per ASP.NET Core:The following code shows the ProductsController to be updated for ASP.NET Core:

using ProductsApp.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;

namespace ProductsApp.Controllers
{
    public class ProductsController : ApiController
    {
        Product[] products = new Product[] 
        { 
            new Product
            {
                Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1
            }, 
            new Product
            {
                Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M
            }, 
            new Product
            {
                Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M
            } 
        };

        public IEnumerable<Product> GetAllProducts()
        {
            return products;
        }

        public IHttpActionResult GetProduct(int id)
        {
            var product = products.FirstOrDefault((p) => p.Id == id);
            if (product == null)
            {
                return NotFound();
            }
            return Ok(product);
        }
    }
}

Aggiornare ProductsController per ASP.NET Core:Update the ProductsController for ASP.NET Core:

  1. Copiare Controllers/ProductsController. cs e la cartella Models dal progetto originale a quello nuovo.Copy Controllers/ProductsController.cs and the Models folder from the original project to the new one.
  2. Modificare lo spazio dei nomi radice dei file copiati in ProductsCore .Change the copied files' root namespace to ProductsCore.
  3. Aggiornare l' using ProductsApp.Models; istruzione a using ProductsCore.Models; .Update the using ProductsApp.Models; statement to using ProductsCore.Models;.

I componenti seguenti non esistono in ASP.NET Core:The following components don't exist in ASP.NET Core:

  • Classe ApiControllerApiController class
  • Spazio dei nomi System.Web.HttpSystem.Web.Http namespace
  • Interfaccia IHttpActionResultIHttpActionResult interface

Apportare le modifiche seguenti:Make the following changes:

  1. Cambiare ApiController in ControllerBase.Change ApiController to ControllerBase. Aggiungere using Microsoft.AspNetCore.Mvc; per risolvere il ControllerBase riferimento.Add using Microsoft.AspNetCore.Mvc; to resolve the ControllerBase reference.

  2. Eliminare using System.Web.Http;.Delete using System.Web.Http;.

  3. Modificare il GetProduct tipo restituito dell'azione da IHttpActionResult a ActionResult<Product> .Change the GetProduct action's return type from IHttpActionResult to ActionResult<Product>.

  4. Semplificare l' GetProduct istruzione dell'azione return a quanto segue:Simplify the GetProduct action's return statement to the following:

    return product;
    

Configurare il routingConfigure routing

Il modello di progetto API ASP.NET Core include la configurazione del routing dell'endpoint nel codice generato.The ASP.NET Core API project template includes endpoint routing configuration in the generated code.

Gli elementi UseRouting e seguenti UseEndpoints chiamano:The following UseRouting and UseEndpoints calls:

  • Registrare la corrispondenza della route e l'esecuzione dell'endpoint nella pipeline middleware .Register route matching and endpoint execution in the middleware pipeline.
  • Sostituire il file di app_start/webapiconfig.cs del progetto ProductsApp .Replace the ProductsApp project's App_Start/WebApiConfig.cs file.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

Configurare il routing come segue:Configure routing as follows:

  1. Contrassegnare la ProductsController classe con gli attributi seguenti:Mark the ProductsController class with the following attributes:

    [Route("api/[controller]")]
    [ApiController]
    

    L' [Route] attributo precedente configura il modello di routing degli attributi del controller.The preceding [Route] attribute configures the controller's attribute routing pattern. L' [ApiController] attributo rende il routing degli attributi un requisito per tutte le azioni nel controller.The [ApiController] attribute makes attribute routing a requirement for all actions in this controller.

    Il routing degli attributi supporta i token, ad esempio [controller] e [action] .Attribute routing supports tokens, such as [controller] and [action]. In fase di esecuzione, ogni token viene sostituito rispettivamente dal nome del controller o dell'azione a cui è stato applicato l'attributo.At runtime, each token is replaced with the name of the controller or action, respectively, to which the attribute has been applied. I token:The tokens:

    • Ridurre il numero di stringhe Magic nel progetto.Reduce the number of magic strings in the project.
    • Verificare che le route rimangano sincronizzate con i controller e le azioni corrispondenti quando vengono applicati i refactoring di ridenominazione automatica.Ensure routes remain synchronized with the corresponding controllers and actions when automatic rename refactorings are applied.
  2. Abilitare le richieste HTTP Get alle ProductController azioni:Enable HTTP Get requests to the ProductController actions:

    • Applicare l' [HttpGet] attributo all' GetAllProducts azione.Apply the [HttpGet] attribute to the GetAllProducts action.
    • Applicare l' [HttpGet("{id}")] attributo all' GetProduct azione.Apply the [HttpGet("{id}")] attribute to the GetProduct action.

Eseguire il progetto migrato e passare a /api/products .Run the migrated project, and browse to /api/products. Viene visualizzato un elenco completo di tre prodotti.A full list of three products appears. Passare a /api/products/1.Browse to /api/products/1. Il primo prodotto verrà visualizzato.The first product appears.

Risorse aggiuntiveAdditional resources

PrerequisitiPrerequisites

Avviso

Se si usa Visual Studio 2017, vedere dotnet/sdk issue #3124 per informazioni sulle versioni di .NET Core SDK che non funzionano con Visual Studio.If you use Visual Studio 2017, see dotnet/sdk issue #3124 for information about .NET Core SDK versions that don't work with Visual Studio.

Esaminare il progetto API Web ASP.NET 4. xReview ASP.NET 4.x Web API project

Questo articolo usa il progetto ProductsApp creato in Introduzione con API Web ASP.NET 2.This article uses the ProductsApp project created in Getting Started with ASP.NET Web API 2. In tale progetto, un progetto API Web ASP.NET 4. x di base viene configurato come segue.In that project, a basic ASP.NET 4.x Web API project is configured as follows.

In Global.asax.csviene effettuata una chiamata a WebApiConfig.Register :In Global.asax.cs, a call is made to WebApiConfig.Register:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Routing;

namespace ProductsApp
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }
    }
}

La WebApiConfig classe si trova nella cartella app_start e dispone di un Register metodo statico:The WebApiConfig class is found in the App_Start folder and has a static Register method:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;

namespace ProductsApp
{
    public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }
    }
}

Questa classe configura il routing degli attributi, sebbene non sia effettivamente utilizzato nel progetto.This class configures attribute routing, although it's not actually being used in the project. Viene inoltre configurata la tabella di routing, che viene utilizzata da API Web ASP.NET.It also configures the routing table, which is used by ASP.NET Web API. In questo caso, l'API Web ASP.NET 4. x prevede che gli URL corrispondano al formato /api/{controller}/{id} , con l' {id} opzione facoltativo.In this case, ASP.NET 4.x Web API expects URLs to match the format /api/{controller}/{id}, with {id} being optional.

Le sezioni seguenti illustrano la migrazione del progetto API Web a ASP.NET Core MVC.The following sections demonstrate migration of the Web API project to ASP.NET Core MVC.

Creare il progetto di destinazioneCreate the destination project

Completare i passaggi seguenti in Visual Studio:Complete the following steps in Visual Studio:

  • Passare a file > nuovo > progetto > altri tipi di progetto > soluzioni di Visual Studio.Go to File > New > Project > Other Project Types > Visual Studio Solutions. Selezionare soluzione vuotae denominare la soluzione WebAPIMigration.Select Blank Solution, and name the solution WebAPIMigration. Fare clic sul pulsante OK.Click the OK button.
  • Aggiungere il progetto ProductsApp esistente alla soluzione.Add the existing ProductsApp project to the solution.
  • Aggiungere un nuovo progetto di applicazione Web ASP.NET Core alla soluzione.Add a new ASP.NET Core Web Application project to the solution. Selezionare .NET Core Target Framework dall'elenco a discesa e selezionare il modello di progetto API .Select the .NET Core target framework from the drop-down, and select the API project template. Denominare il progetto ProductsCoree fare clic sul pulsante OK .Name the project ProductsCore, and click the OK button.

La soluzione ora contiene due progetti.The solution now contains two projects. Le sezioni seguenti illustrano come eseguire la migrazione del contenuto del progetto ProductsApp al progetto ProductsCore .The following sections explain migrating the ProductsApp project's contents to the ProductsCore project.

Eseguire la migrazione della configurazioneMigrate configuration

ASP.NET Core non USA:ASP.NET Core doesn't use:

  • App_start cartella o il file Global. asaxApp_Start folder or the Global.asax file
  • il file Web. config viene aggiunto in fase di pubblicazione.web.config file is added at publish time.

La classe Startup:The Startup class:

  • Sostituisce Global. asax.Replaces Global.asax.
  • Gestisce tutte le attività di avvio dell'app.Handles all app startup tasks.

Per altre informazioni, vedere Avvio dell'app in ASP.NET Core.For more information, see Avvio dell'app in ASP.NET Core.

In ASP.NET Core MVC, il routing degli attributi è incluso per impostazione predefinita quando UseMvc viene chiamato in Startup.Configure .In ASP.NET Core MVC, attribute routing is included by default when UseMvc is called in Startup.Configure. La UseMvc chiamata seguente sostituisce il file di app_start/webapiconfig.cs del progetto ProductsApp :The following UseMvc call replaces the ProductsApp project's App_Start/WebApiConfig.cs file:

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    else
    {
        app.UseHsts();
    }

    app.UseHttpsRedirection();
    app.UseMvc();
}

Eseguire la migrazione di modelli e controllerMigrate models and controllers

Il codice seguente illustra l' ProductsController aggiornamento per ASP.NET Core:[!code-csharp]The following code shows the ProductsController update for ASP.NET Core: [!code-csharp]

Aggiornare ProductsController per ASP.NET Core:Update the ProductsController for ASP.NET Core:

  1. Copiare Controllers/ProductsController. cs dal progetto originale a quello nuovo.Copy Controllers/ProductsController.cs from the original project to the new one.
  2. Copiare la cartella Models dal progetto originale a quella nuova.Copy the Models folder from the original project to the new one.
  3. Modificare lo spazio dei nomi radice dei file copiati in ProductsCore .Change the copied files' root namespace to ProductsCore.
  4. Aggiornare l' using ProductsApp.Models; istruzione a using ProductsCore.Models; .Update the using ProductsApp.Models; statement to using ProductsCore.Models;.

I componenti seguenti non esistono in ASP.NET Core:The following components don't exist in ASP.NET Core:

  • Classe ApiControllerApiController class
  • Spazio dei nomi System.Web.HttpSystem.Web.Http namespace
  • Interfaccia IHttpActionResultIHttpActionResult interface

Apportare le modifiche seguenti:Make the following changes:

  1. Cambiare ApiController in ControllerBase.Change ApiController to ControllerBase. Aggiungere using Microsoft.AspNetCore.Mvc; per risolvere il ControllerBase riferimento.Add using Microsoft.AspNetCore.Mvc; to resolve the ControllerBase reference.

  2. Eliminare using System.Web.Http;.Delete using System.Web.Http;.

  3. Modificare il GetProduct tipo restituito dell'azione da IHttpActionResult a ActionResult<Product> .Change the GetProduct action's return type from IHttpActionResult to ActionResult<Product>.

  4. Semplificare l' GetProduct istruzione dell'azione return a quanto segue:Simplify the GetProduct action's return statement to the following:

    return product;
    

Configurare il routingConfigure routing

Configurare il routing come segue:Configure routing as follows:

  1. Contrassegnare la ProductsController classe con gli attributi seguenti:Mark the ProductsController class with the following attributes:

    [Route("api/[controller]")]
    [ApiController]
    

    L' [Route] attributo precedente configura il modello di routing degli attributi del controller.The preceding [Route] attribute configures the controller's attribute routing pattern. L' [ApiController] attributo rende il routing degli attributi un requisito per tutte le azioni nel controller.The [ApiController] attribute makes attribute routing a requirement for all actions in this controller.

    Il routing degli attributi supporta i token, ad esempio [controller] e [action] .Attribute routing supports tokens, such as [controller] and [action]. In fase di esecuzione, ogni token viene sostituito rispettivamente dal nome del controller o dell'azione a cui è stato applicato l'attributo.At runtime, each token is replaced with the name of the controller or action, respectively, to which the attribute has been applied. I token riducono il numero di stringhe magiche nel progetto.The tokens reduce the number of magic strings in the project. I token assicurano inoltre che le route rimangano sincronizzate con i controller e le azioni corrispondenti quando vengono applicati i refactoring di ridenominazione automatica.The tokens also ensure routes remain synchronized with the corresponding controllers and actions when automatic rename refactorings are applied.

  2. Impostare la modalità di compatibilità del progetto su ASP.NET Core 2,2:Set the project's compatibility mode to ASP.NET Core 2.2:

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc()
                .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
    }
    

    La modifica precedente:The preceding change:

    • È necessario per usare l' [ApiController] attributo a livello di controller.Is required to use the [ApiController] attribute at the controller level.
    • Consente di optare per i comportamenti potenzialmente innovatori introdotti in ASP.NET Core 2,2.Opts in to potentially breaking behaviors introduced in ASP.NET Core 2.2.
  3. Abilitare le richieste HTTP Get alle ProductController azioni:Enable HTTP Get requests to the ProductController actions:

    • Applicare l' [HttpGet] attributo all' GetAllProducts azione.Apply the [HttpGet] attribute to the GetAllProducts action.
    • Applicare l' [HttpGet("{id}")] attributo all' GetProduct azione.Apply the [HttpGet("{id}")] attribute to the GetProduct action.

Eseguire il progetto migrato e passare a /api/products .Run the migrated project, and browse to /api/products. Viene visualizzato un elenco completo di tre prodotti.A full list of three products appears. Passare a /api/products/1.Browse to /api/products/1. Il primo prodotto verrà visualizzato.The first product appears.

Shim di compatibilitàCompatibility shim

La libreria Microsoft. AspNetCore. Mvc. WebApiCompatShim fornisce uno shim di compatibilità per spostare i progetti API Web ASP.NET 4. x in ASP.NET Core.The Microsoft.AspNetCore.Mvc.WebApiCompatShim library provides a compatibility shim to move ASP.NET 4.x Web API projects to ASP.NET Core. Lo shim di compatibilità estende ASP.NET Core per supportare una serie di convenzioni di ASP.NET 4. x Web API 2.The compatibility shim extends ASP.NET Core to support a number of conventions from ASP.NET 4.x Web API 2. L'esempio portato in precedenza in questo documento è abbastanza elementare che lo shim di compatibilità non fosse necessario.The sample ported previously in this document is basic enough that the compatibility shim was unnecessary. Per i progetti di grandi dimensioni, l'uso dello shim di compatibilità può essere utile per colmare temporaneamente il gap dell'API tra ASP.NET Core e ASP.NET 4. x Web API 2.For larger projects, using the compatibility shim can be useful for temporarily bridging the API gap between ASP.NET Core and ASP.NET 4.x Web API 2.

Lo shim di compatibilità dell'API Web è pensato per essere usato come misura temporanea per supportare la migrazione di progetti API Web ASP.NET 4. x di grandi dimensioni a ASP.NET Core.The Web API compatibility shim is meant to be used as a temporary measure to support migrating large ASP.NET 4.x Web API projects to ASP.NET Core. Nel corso del tempo, è necessario aggiornare i progetti in modo da usare ASP.NET Core modelli anziché basarsi sullo shim di compatibilità.Over time, projects should be updated to use ASP.NET Core patterns instead of relying on the compatibility shim.

Le funzionalità di compatibilità incluse in Microsoft.AspNetCore.Mvc.WebApiCompatShim includono:Compatibility features included in Microsoft.AspNetCore.Mvc.WebApiCompatShim include:

  • Aggiunge un ApiController tipo in modo che i tipi di base dei controller non debbano essere aggiornati.Adds an ApiController type so that controllers' base types don't need to be updated.
  • Abilita l'associazione di modelli di tipo API Web.Enables Web API-style model binding. ASP.NET Core funzioni di associazione di modelli MVC in modo analogo a quello di ASP.NET 4. x MVC 5, per impostazione predefinita.ASP.NET Core MVC model binding functions similarly to that of ASP.NET 4.x MVC 5, by default. Lo shim di compatibilità modifica l'associazione di modelli in modo da essere più simile alle convenzioni di associazione del modello ASP.NET 4. x Web API 2.The compatibility shim changes model binding to be more similar to ASP.NET 4.x Web API 2 model binding conventions. Ad esempio, i tipi complessi vengono automaticamente associati dal corpo della richiesta.For example, complex types are automatically bound from the request body.
  • Estende l'associazione di modelli in modo che le azioni del controller possano prendere parametri di tipo HttpRequestMessage .Extends model binding so that controller actions can take parameters of type HttpRequestMessage.
  • Aggiunge formattatori di messaggi che consentono alle azioni di restituire risultati di tipo HttpResponseMessage .Adds message formatters allowing actions to return results of type HttpResponseMessage.
  • Aggiunge metodi di risposta aggiuntivi che possono essere usati dalle azioni API Web 2 per rispondere alle risposte:Adds additional response methods that Web API 2 actions may have used to serve responses:
    • HttpResponseMessagegeneratoriHttpResponseMessage generators:
      • CreateResponse<T>
      • CreateErrorResponse
    • Metodi di risultato dell'azione:Action result methods:
      • BadRequestErrorMessageResult
      • ExceptionResult
      • InternalServerErrorResult
      • InvalidModelStateResult
      • NegotiatedContentResult
      • ResponseMessageResult
  • Aggiunge un'istanza di IContentNegotiator al contenitore di inserimento delle dipendenze dell'app e rende disponibili i tipi correlati alla negoziazione del contenuto da Microsoft. AspNet. WebAPI. client.Adds an instance of IContentNegotiator to the app's dependency injection (DI) container and makes available the content negotiation-related types from Microsoft.AspNet.WebApi.Client. Esempi di tali tipi includono DefaultContentNegotiator e MediaTypeFormatter .Examples of such types include DefaultContentNegotiator and MediaTypeFormatter.

Per usare lo shim di compatibilità:To use the compatibility shim:

  1. Installare il pacchetto NuGet Microsoft. AspNetCore. Mvc. WebApiCompatShim .Install the Microsoft.AspNetCore.Mvc.WebApiCompatShim NuGet package.
  2. Registrare i servizi dello shim di compatibilità con il contenitore DI dell'app chiamando services.AddMvc().AddWebApiConventions() in Startup.ConfigureServices .Register the compatibility shim's services with the app's DI container by calling services.AddMvc().AddWebApiConventions() in Startup.ConfigureServices.
  3. Definire route specifiche dell'API Web usando nella MapWebApiRoute IRouteBuilder chiamata dell'app IApplicationBuilder.UseMvc .Define web API-specific routes using MapWebApiRoute on the IRouteBuilder in the app's IApplicationBuilder.UseMvc call.

Risorse aggiuntiveAdditional resources