分类
标签
.NET 9008 adb android apt asp.net ASP.NET Core audio bug C c++ C++ chrome cmd csharp CSharp css css3 debian debug dotnet dotnet Framework dpkg GDI&GDI+ gdi&gdi+ golang graphics html html5 http java javascript json kali linux linux mci microsoft minimap MSBuild mysql OpenCV PInvoke powershell python QQ rust shell speex sql tutorial ubuntu ui unity vb.net visual studio Visual Studio web Web win32 winapi windows winform WinForm wpf WPF xaml xfce 列表 刷机 前端 加密 反射 反编译 可视化 图像处理 多线程 字符串 安卓 实例 局域网 幻影坦克 库 开发语言 异步 微信 手册 手机 接口 摘要 救砖 数字签名 数字证书 数字音频 数据库 桌面程序 游戏 游戏引擎 源码 爬虫 玩游戏 电脑硬件 笔记 算法 类库 线性代数 编程语言 网络 脚本语言 计算机图形学 计算机基础 设计模式 语音编解码 运维 进制 面向对象编程 音频 音频编码解码
387 字
2 分钟
在 WPF 中使用 ASP.NET Core 处理 HTTP 请求
对于 SDK 样式 csproj 的项目, 只需要添加 Microsoft.AspNetCore.App 的框架引用即可直接使用 ASP.NET Core 的所有 API
创建项目
首先, 创建一个 SDK 样式 csproj 的 WPF 项目, 并打开项目文件, 它的内容大概是这样:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
然后, 在 Project
节点下添加 ItemGroup
节点, 并继续向下添加 FrameworkReference
节点, 然后设置其 Include
特性值为 Microsoft.AspNetCore.App
. 添加后项目文件大致如下:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UseWPF>true</UseWPF>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>
为了调试时方便, 你也可以将
PropertyGroup
下的OutputType
设置为Exe
, 这样程序在启动的时候就会带有控制台.
编写主逻辑
现在, 我们就可以像一个正常的 ASP.NET Core 项目一样, 使用 WebApplication
和 WebApplicationBuilder
进行后端逻辑的编写了.
接下来, 转到 App.xaml.cs
, 重写 OnStartup
方法, 并添加自己的 Web 初始化和运行逻辑, 最后结果大致如下:
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var builder = WebApplication.CreateBuilder();
builder.Services.AddControllers(); // 添加控制器
builder.WebHost.UseUrls("http://localhost:5000"); // 更改监听地址
var app = builder.Build();
app.UseDefaultFiles();
app.UseStaticFiles();
app.MapControllers();
app.RunAsync();
}
}
接下来, 我们在项目中添加一个 TestController
类, 用于测试后端请求处理:
[Route("[controller]")]
public class TestController : Controller
{
[HttpGet]
public object Get()
{
return new
{
Fuck = "You world"
};
}
}
最终效果
启动程序, 并在浏览器访问 http://localhost:5000/test
, 可以看到结果:
关于此主题的更完整示例, 可以在 GitHub 上 SlimeNull/UseAspNetCoreInWpf 仓库中查看.
在 WPF 中使用 ASP.NET Core 处理 HTTP 请求
https://slimenull.com/posts/202410030950/