所以我在网上找到了很多将C#程序作为服务运行的教程,但是我一直找不到一个专门面向web gui和后端服务器组件的asp net框架。在我的例子中,前端是有Angular 的,尽管这可能并不重要。我的程序有一个从asp net C#编译的. exe,当运行时,启动后端服务器。它等待来自端口5000和5001上的前端web gui的调用。但是,我无法将此. exe转换为工作的服务(通过powershell命令,如sc.exe中的命令)。我可以创建该服务,但我永远无法启动它。我相信我的program.cs中缺少一些关于服务的内容:
IHost host = Host.CreateDefaultBuilder(args)
.UseWindowsService(options =>
{
options.ServiceName = "DebugGui";
})
.Build();
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment()) {
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.Urls.Add("http://0.0.0.0:5000");
app.Urls.Add("http://0.0.0.0:5001");
app.MapControllerRoute(
name: "default",
pattern: "{controller}/{action=Index}/{id?}");
app.MapFallbackToFile("index.html"); ;
app.Run();
- 正如你所看到的,我从一个服务教程中引入的host对象没有被使用,因为我不知道如何使用它**。另外,我觉得使用app.run()不是正确的方法,因为它强制弹出一个命令行界面并通过那里运行程序,而服务不会有这样的东西(至少对用户不可见)。
我已经看过/试过的教程;它们很有帮助,但对我的情况来说不够具体,因为它们没有包含Web部分(var builder = WebApplication.CreateBuilder(args););我基本上是想弄清楚如何添加web部分。https://learn.microsoft.com/en-us/dotnet/core/extensions/windows-servicehttps://learn.microsoft.com/en-us/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-7.0&tabs=visual-studiohttps://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-7.0&tabs=visual-studio(这个确实有web部分,但当我按照教程操作时,我在尝试启动服务时收到一个错误,说它未能及时启动。我在兔子洞里研究这个问题,但没有找到解决方案)。
任何帮助都将不胜感激。
1条答案
按热度按时间k97glaaz1#
所以我知道回答你自己的问题很奇怪,但我找到了解决方案,并想把它写下来,以防其他人有这个问题,并发现这篇文章。
原来我的代码已经基本正确了,而我遇到的问题是别的(虽然仍然不确定是什么)。
我必须做的另一件事是在visual studio 2022而不是2019中重新创建asp net 6.0模板项目.这似乎解决了服务启动然后立即停止或超时的问题.我仍然不知道所有细节,尽管从非代码的Angular 来看,为什么事情最初不能正常工作(我对服务本身有很多问题),但我只是想发布适合我的东西。