OWIN Self-Host + Web Api соединение не могу сделать запросы через почтальона

Я пытаюсь самостоятельно разместить веб-API. Он прекрасно работает, когда я вызываю запросы через мою программу, где находится контроллер API. Но я не могу сделать запрос через клиента почтальона. В чем может быть проблема?

Контроллер Api

public class MyApiController : ApiController
{
    public string Get()
    {
        return "Get";
    }
}

Запуск.цезий

public class Startup
{
    public void Configuration(IAppBuilder appBuilder)
    {
        var config = new HttpConfiguration();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
        appBuilder.UseWebApi(config);
    }
}

Программа.цезий

class Program
{
    static void Main(string[] args)
    {
        string url = "http://localhost:44300/";
        using (WebApp.Start<Startup>(url))
        {
            var client = new HttpClient();

            var response = client.GetAsync(url + "api/myapi").Result;

            Console.WriteLine(response.Content.ReadAsStringAsync().Result);
        }
        Console.ReadLine();
    }
}

1 ответ

  1. Похоже, что ваши проблемы находятся в вашем основном методе. В C# usingоператор (link) создает ресурс, выполняет код в блоке, а затем избавляется от ресурса.

    В опубликованном примере веб-приложение удаляется сразу после печати ответа на консоли (и до того, как вы сможете сделать запросы с помощью браузера).

    Эти изменения должны позволить вам сохранить веб-приложение в области, чтобы играть с платформой.

    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:44300/";
            using (WebApp.Start<Startup>(url))
            {
                var client = new HttpClient();
    
                var response = client.GetAsync(url + "api/myapi").Result;
    
                Console.WriteLine(response.Content.ReadAsStringAsync().Result);
                Console.WriteLine("WebApp Ready");
                Console.ReadLine();
            }
            Console.WriteLine("WebApp disposed.");
            Console.ReadLine();
        }
    }