0

我正在尝试自托管 Web API。当我通过我的程序调用请求时它工作正常,API 控制器在哪里。但我无法通过 Postman Client 提出请求。可能是什么问题呢?

API 控制器

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

启动.cs

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);
    }
}

程序.cs

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();
    }
}
4

1 回答 1

0

看起来您的问题出在您的主要方法中。在 C# 中,using语句 ( link ) 创建资源,执行块中的代码,然后释放资源。

在您发布的示例中,您的 WebApp 在将响应打印到控制台之后立即被处理(并且在您能够使用浏览器发出请求之前)。

这些编辑应该允许您将 WebApp 保持在范围内,以便使用框架。

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();
    }
}
于 2017-01-13T21:31:57.280 回答