【问题标题】:gRPC as Windows ServicegRPC 作为 Windows 服务
【发布时间】:2020-03-15 02:21:34
【问题描述】:

我正在试验 gRpc 并让它运行。我正在使用 .net 核心 3.1。 C# 。我现在正在尝试将其安装为 Windows 服务。机器是Win 10 Pro x64。

我按照指示添加了该行以将其作为 Windows 服务运行...

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            //https://docs.microsoft.com/en-us/dotnet/architecture/grpc-for-wcf-developers/self-hosted

            .UseWindowsService() // Enable running as a Windows service

            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });

我发布到一个文件夹(我以前从未使用过发布),瞧……发布文件夹。我去那个文件夹并运行(作为管理员)installutil。是的,它在我使用完整路径时找到了该实用程序。那条路是

“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe”

这是为 .net 核心运行的正确版本吗?这有关系吗?

所以我运行 installutil {full-path-to}\grpcservice1.exe

我明白了……

初始化安装时发生异常: System.BadImageFormatException:无法加载文件或程序集 'file:///....\GrpcService1\GrpcService1\bin\Debug\netcoreapp3.1\publish\GrpcService1.exe' 或其依赖项之一。该模块预计包含一个 程序集清单..

我不知道我做错了什么...... 建议?我只是按照例子。

TIA

【问题讨论】:

  • 我已尝试为构建指定 x64。

标签: c# windows service grpc


【解决方案1】:

installutil.exe 查找标记为RunInstallerAttribute 设置为trueInstaller 类。它仅适用于使用 .NET Framework 编写的 Windows 服务。

对于 .NET Core,我建议您使用 sc create/New-Service 发布您的应用程序并注册一个新服务,就像您在任何其他可执行文件的情况下一样。

还有detailed docs in the .NET Core documentation,以防您需要更详细的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2017-03-17
    • 1970-01-01
    相关资源
    最近更新 更多