[英]Self-Hosted Web API in .NET 6
我需要向現有庫添加一個非常簡單的 Web API,以便 Python 可以與應用程序通信。 簡單的請求/JSON 響應。 這比最初想象的更具挑戰性。 我習慣了 NodeJS,像 Express 這樣的庫只需幾行代碼就可以做到這一點。
顯然,Web 服務器需要集成到庫中。 我不能依賴 IIS 或任何 Web 服務器。
這些類型的教程遍布網絡:
安裝:Microsoft.AspNet.WebApi.OwinSelfHost
主要的
static void Main(string[] args)
{
string baseAddress = "http://localhost:9000/";
// 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;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.ReadLine();
}
}
啟動
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
控制器
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody] string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody] string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
看起來很簡單,但是,它在 .NET 6 中不起作用。似乎存在兼容性問題。
我偶然發現了以下線程:
在啟動 .Net Core 2.0 上使用 Owin 時遇到 NullReferenceException - 設置?
但是,我正在努力尋找關於如何在現有 .NET 6 庫中部署簡單 Web API 的實用答案。 建議的解決方法對我不起作用。
任何建議將被認真考慮 ? 我應該去不同的圖書館嗎? ASP.NET 不是正確的工具嗎?
ASP.NET Core 內置並默認啟用 Web 服務器 - Kestrel ,因此無需設置 OWIN。 簡單的設置可以這樣看( WebApplication.CreateBuilder
在內部調用UseKestrel
):
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/", () => "Hello World!");
app.Run();
也可以看看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.