.NET Core WPF中构建Web API

在刚开始遇到这个需求的时候,我在想,这能行吗?又想啊,这都2023年了,应该可以啊,于是搜索了解了下,在过去就已经有相关组件可以实现在winform或者wpf客户端中启动HTTP Web Api服务了,比如OWIN Self-Host,官方教程:使用 OWIN Self-Host ASP.NET Web API - ASP.NET 4.x | Microsoft Learn

这也是我最开始尝试的方法,但遗憾的是,这在.NET6中无法使用,会产生一个异常:

也早有人在GITHUB上提了出来:

Internal NullReferenceException in OwinHttpListener.cs on .Net(Core) 5 · Issue #392 · aspnet/AspNetKatana · 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);

总之,这是最为优雅的方式了。

参考:ASP.NET Web API|使用 .NET 和 C# 的 Rest API

WPF(Windows Presentation Foundation)是一种用于创建Windows桌面应用程序的技术。而WebAPI是一种用于创建Web服务的框架。虽然WPF主要用于构建桌面应用程序,但我们可以使用WPF来生成WebAPI接口。 要生成WebAPI接口,我们可以按照以下步骤进行操作: 1. 创建WPF应用程序项目:在Visual Studio创建一个新的WPF应用程序项目。 2. 添加WebAPI控制器类:在项目添加一个控制器类,该类继承自System.Web.Http.ApiController,并实现所需的接口方法。在这些方法,我们可以定义需要接收的HTTP请求和返回的数据。 3. 配置WebAPI路由:在Global.asax文件配置WebAPI路由,以将HTTP请求路由到正确的控制器和方法。 4. 编写业务逻辑:在控制器方法,根据需求编写业务逻辑,可以连接数据库、调用其他服务等。 5. 运行应用程序:通过调试或发布应用程序,将其运行在本地的IIS或其他Web服务器上。 通过以上步骤,我们可以使用WPF生成WebAPI接口。此时,我们可以通过HTTP请求访问WPF应用程序的接口,并获取返回的数据。 需要注意的是,尽管我们可以使用WPF来生成WebAPI接口,但这并不是WPF的主要用途。如果只需要创建WebAPI接口,建议使用专门的Web开发框架,如ASP.NET Core等。以上所述仅为一种可能的解决方案,具体实现方式可能因项目需求和框架版本而有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Boogaloo-Jer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值