怎么使用wpf或者winform程序宿主 asp.net core web api
asp.net core web api 自带有自宿主,但不想用控制台程序,想怎么宿主到winform或者wpf。
这样在windows服务器直接开启这个中间层程序就可以了,不需要安装以及部署iis
最简单的方法就是,用WinForm程序调用dotnet,并隐藏cmd窗口:
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.FileName = "dotnet"; startInfo.Arguments = "xxx.dll"; startInfo.WorkingDirectory = AppDomain.CurrentDomain.BaseDirectory; startInfo.UseShellExecute = false; startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; startInfo.CreateNoWindow = true; System.Diagnostics.Process.Start(startInfo);
谢谢!这种方法可以,已经可以成功部署
试试在 wpf 或 winform 程序中通过下面的代码运行 asp.net core 站点
await Task.Run(() => CreateWebHostBuilder(args).Build().Run());
其实我是有个独立的core web api程序,这个程序既可以正常的宿主到iis,或者其他的web服务器。
但是为了简化这个部署的过程。
前提是在windows服务器,我想运行一个winform或者wpf的独立程序,来宿主这个webapi。主要是为了简化方便。原来的asp.net 时代 owin是可以做到的。现在core web api没什么思路,想着这个wpf程序里面执行dotnet 命令来,但是cmd的屏幕不能关闭,有什么办法把这个api独立的宿主到winform程序,而不改变这个api的完整性
@sylla: IIS 只是一个反向代理,asp.net core 的 web 服务器是内置的 Kestrel
相关博问:请问 Kestrel 服务器为什么建议配合 iis 或者是 nginx 使用?
相关博文:.NET Core开发日志——从ASP.NET Core Module到KestrelServer
同问更好的解决方案 使用cmd挺麻烦 关闭是个问题 是不是有更好的方案!