Как настроить консольный проект собственного хоста для существующего проекта Asp.NET Web API - PullRequest
0 голосов
/ 25 июня 2019

У меня есть веб-приложение ASP.NET.Шаблон создает контроллер веб-API по умолчанию ValuesController.Я пытаюсь создать консольное приложение для самостоятельного размещения с использованием Microsoft.AspNet.WebApi.OwinSelfHost версии 5.2.6.Структура решения выглядит следующим образом:

enter image description here

Startup.cs в SelfHost.Server, согласитесь!не хорошее имя, выглядит так:

HttpConfiguration config = new HttpConfiguration();

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

        app.UseWebApi(config);

И вот как я его использую:

static void Main(string[] args)
    {
        var uri = "http://localhost:44382/";
        using (WebApp.Start<Startup>(uri))
        {
            Console.WriteLine($"Server started at {uri} on {DateTime.Now}");

            HttpClient client = new HttpClient();
            var response = client.GetAsync(uri + "api/values").Result;
            Console.WriteLine(response.Content.ReadAsStringAsync().Result);

            Console.ReadKey();
        }
    }

При запуске консольного приложения выдается эта ошибка:

{"Message": "Не найден ресурс HTTP, который соответствует URI запроса 'http://localhost:44382/api/values'.","MessageDetail":"No тип, который соответствует контроллеру с именем' values ​​'."}

Использование почтальонаЯ получаю «Не удалось получить ответ»

Вопрос Пожалуйста, как мне это сделать?

1 Ответ

0 голосов
/ 25 июня 2019

Независимо от вопроса, должны ли мы это делать или нет.Есть много способов, но вот шаги, которые я выполнил: (Создал новые проекты, которые названы по-разному, как в оригинальном вопросе)

Создать проект веб-API WebApplication1 (я использовал существующий шаблон в Visual Studio).Создайте консольное приложение, ConsoleApp1.Добавьте ссылку на WebApplication1 в ConsoleApp1.Добавьте пакет дополнительных приложений Microsoft.AspNet.WebApi.OwinSelfHost в ConsoleApp1.Обновите основной метод в program.cs следующим образом:

var baseAddress = "http://localhost: 44358/";
        using (WebApp.Start<Startup>(baseAddress))
        {
            Console.WriteLine("Server started at:" + baseAddress);
            Console.ReadLine();
        }

Добавьте файл startup.cs в ConsoleApp1, добавив в него следующий код:

public void Configuration(IAppBuilder app)
    {
        // Configure Web API for self-host.
        var config = new HttpConfiguration();
        WebApplication1.WebApiConfig.Register(config);
        app.UseWebApi(config);
    }

Используйте почтальона или любого клиента для проверки конечной точки http://localhost:44358/api/values

Вывод: мы можем это сделать.Я использовал конфигурации из WebApplication1 в ConsoleApp1.Аналогично, другие конфигурации, например, единицы, фильтры и т. Д., Могут быть использованы повторно при необходимости.

Пример вывода (с использованием почтальона):

enter image description here

...