我拥有一个 web api,它将像用户机器上的 windows 服务一样运行,我如何生成这个应用程序的安装程序? [复制]
Posted
技术标签:
【中文标题】我拥有一个 web api,它将像用户机器上的 windows 服务一样运行,我如何生成这个应用程序的安装程序? [复制]【英文标题】:I own a web api that will run like a windows serivce on the user's machine, how can I generate an installer of this application? [duplicate] 【发布时间】:2020-10-20 21:11:26 【问题描述】:我有一个在 .NET Core 2.1.7 上运行的应用程序。 这将安装在我客户的机器上。 我想将其作为 Windows 服务运行。
我该怎么做? 最好的方法是什么?
自托管:
public class Program
public static void Main(string[] args)
var isService = !(Debugger.IsAttached || args.Contains("--console"));
var builder = CreateWebHostBuilder(args.Where(arg => arg != "--console").ToArray());
if (isService)
var pathToExe = Process.GetCurrentProcess().MainModule.FileName;
var pathToContentRoot = Path.GetDirectoryName(pathToExe);
builder.UseContentRoot(pathToContentRoot);
var host = builder.Build();
if (isService)
host.RunAsService();
else
host.Run();
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
【问题讨论】:
【参考方案1】:既然您这样做了:var isService = !(Debugger.IsAttached || args.Contains("--console"));
一旦您发布您的应用程序,您将始终尝试使用host.RunAsService();
作为服务运行。如果您尝试通过调用 .exe 程序来运行它,则会出现错误。
要创建 Windows 服务,您只需在具有管理员权限的命令提示符下运行以下命令:
sc create ServiceName binPath= "c:\pathtoexe\file.exe"
还要确保在“binPath=”之后留一个空格,否则将不考虑该命令。
【讨论】:
以上是关于我拥有一个 web api,它将像用户机器上的 windows 服务一样运行,我如何生成这个应用程序的安装程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
反序列化 Web.API 参数时未调用自定义 Json.NET JsonConverter