Если вы ненавидите IIS, эта статья для вас. Он научит вас использовать Owin для размещения WebApi в консольном приложении. В идеале вы хотите, чтобы OWIN размещал ваш API в службе Windows, но это уже другая статья.
Вы можете найти полный проект здесь:
https://github.com/RoccoSen/OwinToWebAPI
Предварительные требования:
- Установлен ли V isual Studio 2017 Community Edition
1. Создайте новый проект консольного приложения с помощью .NET Framework.
Файл - ›Новый -› Проект
2. Установите OWIN с помощью консоли диспетчера пакетов NuGet.
Инсталляционный пакет Microsoft.AspNet.WebApi.OwinSelfHost
3. Создайте класс Startup.cs для конфигурации OWIN. Создайте это в корне вашего проекта.
using Microsoft.Owin; using Owin; using System.Web.Http; [assembly: OwinStartup(typeof(OwinAPI.Startup))] namespace OwinAPI { public class Startup { public void Configuration(IAppBuilder app) { // Configure Web API for self-host. // Note: I prefer my routes to be "api/{controller}/{action}" instead of "api/{controller}/{id}" HttpConfiguration config = new HttpConfiguration(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}", defaults: new { id = RouteParameter.Optional } ); app.UseWebApi(config); } } }
4. Измените static void main на хост OWIN.
Примечание. Я использую http: // localhost: 9000. Используйте любой URL-адрес, который вы хотите разместить в OWIN.
using Microsoft.Owin.Hosting; using System; namespace OwinAPI { class Program { const string url = "http://localhost:9000"; static void Main(string[] args) { using (WebApp.Start<Startup>(url)) { Console.WriteLine("Server started at:" + url); Console.ReadLine(); } } } }
5. Добавьте контроллер API.
Мне нравится сгруппировать свои контроллеры в папку под названием «Контроллер». Вот код для ApiController. Он просто возвращает массив слов.
using System.Collections.Generic; using System.Web.Http; namespace OwinAPI.Controller { public class TestController : ApiController { public IEnumerable<string> GetTest() { return new string[] { "One", "Two", "Three" }; } } }
6. Протестируйте (сделайте запрос к URL, чтобы узнать, все ли работает.)
Заметили, что мы возвращаем XML, а не JSON? Это потому, что XML является конфигурацией по умолчанию. В идеале вы хотите, чтобы это был JSON. Это можно сделать, обновив класс Startup.