.NET WebApi 托管在WindowsServices 上

.NET WebApi 托管在WindowsServices 上

最近在WPF项目中使用了WebApi项目,项目在部署的时候需要托管在Windows Services 服务上,我使用的是.NET6

1.正常在VS中新建一个.NET WebApi 项目,默认就可以,我去掉了https,使用http就可以
2.引入nuget 包 Microsoft.Extensions.Hosting.WindowsServices
3.在Porgram.cs 中加入代码
//Porgam.cs 的第一行
Directory.SetCurrentDirectory(AppContext.BaseDirectory);

//在host 中进行托管
builder.Host.UseWindowsService();
3.用 管理员身份 打开 PowerShell 工具,进入所在的webapi项目目录 执行(一定要用管理员身份打开,我使用VS中的PowerShell 提示“拒绝访问”
//项目发布 设置输出目录
dotnet publish --output "D:\Publish"

//创建服务,create “服务名称”  binpath 为项目发布设置的输出目录,(可以先打开exe 看看运行是否成功)
sc.exe create "WPFWEB" binpath= "D:\Publish\TestWebAPI.exe"

//开启服务
sc.exe start "WPFWEB"```
4.在浏览器输入项目接口地址查看一下是否成功,开启服务不报错,基本就没有问题了。

异常处理:如果开启服务报错可以去查看window 日志

错误应用程序名称: WebApiHostWindows.exe,版本: 1.0.0.0,时间戳: 0x66470000
错误模块名称: KERNELBASE.dll,版本: 10.0.22621.3880,时间戳: 0xdb9989e8
异常代码: 0xe0434352
错误偏移量: 0x000000000005fabc
错误进程 ID: 0x0x23A0
错误应用程序启动时间: 0x0x1DADC48B8805018
错误应用程序路径: D:\Publish\directory\WebApiHostWindows.exe
错误模块路径: C:\WINDOWS\System32\KERNELBASE.dll
报告 ID: 47615482-ab27-4f50-b9b1-31bee19c9e7e
错误程序包全名: 
错误程序包相对应用程序 ID: 

这是当时遇到的一个错误
解决方法就是在program.cs 第一行没有指定工作目录 参考链接!
https://blog.csdn.net/sD7O95O/article/details/127274325

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值