在刚开始遇到这个需求的时候,我在想,这能行吗?又想啊,这都2023年了,应该可以啊,于是搜索了解了下,在过去就已经有相关组件可以实现在winform或者wpf客户端中启动HTTP Web Api服务了,比如OWIN Self-Host,官方教程:使用 OWIN Self-Host ASP.NET Web API - ASP.NET 4.x | Microsoft Learn
这也是我最开始尝试的方法,但遗憾的是,这在.NET6中无法使用,会产生一个异常:
也早有人在GITHUB上提了出来:
于是我继续寻找答案:
对啊,不是有MiniAPI吗?
使用 C# 在任何平台上构建安全 REST API
你可以使用以下几行代码,就能开启Web API,甚至可以身份验证和授权:
var app = WebApplication.Create();
app.MapGet("/people", () => new[]
{
new Person("Ana"), new Person("Filipe"), new Person("Emillia")
});
app.Run();
record Person(string Name);
> curl https://localhost:5001/people
[{"name":"Ana"},{"name":"Felipe"},{"name":"Emillia"}]
如此优雅!!!对了,你还需要引用以下包:Swashbuckle.AspNetCore
当然,你可以指定URL、或者跨域配置等等。。
//这样写也行
var builder = WebApplication.CreateBuilder();
//builder.Services.AddCors(options =>
//{//跨域配置
// options.AddPolicy(name: "Policy1",
// builder =>
// {
// builder.WithOrigins("http://localhost:5001");
// });
//});
WebApplication webApp = builder.Build();
//webApp.UseCors("Policy1");
webApp.MapGet("/Get", () => "Hello! ");
webApp.MapPost("api/Mini", ([FromBody] object obj) =>
{
//your code...do something
});
string url = "任意URL";
webApp.Run(url);
总之,这是最为优雅的方式了。