c# - tutorial - Convierta la API web para usar el alojamiento propio
self hosted web api 2 (1)
Estoy tratando de convertir un proyecto API web ASP.NET existente (alojado actualmente en IIS) en uno que pueda usar el marco SelfHost. Estoy un poco confuso sobre los detalles, pero entiendo que puedo ejecutar un servidor autohospedado en una ventana de la consola y luego ejecutar el servicio encima. El problema que tengo es que mi proyecto es un proyecto MVC y no uno de consola. Mi familiaridad con las aplicaciones de consola / Windows es algo limitada ya que generalmente trabajo con proyectos que se alojarán en IIS.
En lo que estoy un poco confundido es si necesito convertir mi proyecto de API web existente en Visual Studio en una nueva aplicación de consola, o si hay una manera de crear otra aplicación de consola Proyecto en la solución que pueda actuar como servidor web para los servicios de API web, o más bien si hay una manera de agregar un elemento de consola con un punto de entrada Principal () al proyecto MVC existente (anulando el punto de entrada Global.asax).
La búsqueda no arrojó mucha información que me ayude a llenar este vacío de conocimiento. Esperando que alguien pueda señalarme en la dirección correcta. Incluso a un alto nivel.
Hace poco tuve que convertir un proyecto de API web en un servicio autohospedado utilizando OWIN (en Visual Studio 2013). Lo hice de la siguiente manera:
(1) Se agregaron manualmente los archivos Program.cs y Startup.cs en la raíz del proyecto. Ambos archivos contienen código como se describe aquí: http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api .
(2) Fuimos a las propiedades del proyecto de API web. En la sección "Aplicaciones", establecí "Tipo de salida" como "Aplicación de consola" y configuré la clase "Programa" como el "Objeto de inicio".
Aunque no es necesario, modifiqué ligeramente el bloque "using" dentro de Program.Main () para que se vea de la siguiente manera:
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
// Create HttpCient and make a request to api/values
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/values").Result;
if (response != null)
{
Console.WriteLine("Information from service: {0}", response.Content.ReadAsStringAsync().Result);
}
else
{
Console.WriteLine("ERROR: Impossible to connect to service");
}
Console.WriteLine();
Console.WriteLine("Press ENTER to stop the server and close app...");
Console.ReadLine();
}
Finalmente, en lugar de llamar a config.Routes.MapHttpRoute () varias veces en Startup.Configuration (), puede consultar las rutas que ya escribió para la API web:
// Configure Web API for self-host.
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);