小编Ber*_*ger的帖子

作为 Windows 服务运行时,ConfigureServices() 中的 ASP.NetCore 内容根路径

当将 Asp.Net Core 应用程序作为 Windows 服务运行(使用 .net Core 兼容包)时,您必须获取与正常运行不同的应用程序数据路径。正如这里所描述的,你必须这样做:

string pathToContentRoot = Directory.GetCurrentDirectory();
if (isService) {
    string pathToExe = Process.GetCurrentProcess().MainModule.FileName;
    pathToContentRoot = Path.GetDirectoryName(pathToExe);
}
Run Code Online (Sandbox Code Playgroud)

并设置 Webhostbuilder 的基本路径(缩短):

IConfigurationRoot config = new ConfigurationBuilder()
                                .SetBasePath(pathToContentRoot) 
                                .Build();
IWebHost host = WebHost.CreateDefaultBuilder(args)
                       .UseConfiguration(config)
                       .UseStartup<Startup>()
                       .Build();
Run Code Online (Sandbox Code Playgroud)

然而问题是,当您想在ConfigureServices(...) 方法中访问Startup.cs 中的此路径时,我找不到方法来执行此操作。

我尝试过以下事情:

#1

配置服务仅接受 IServiceCollection,因此这是不允许的

public void ConfigureServices(IServiceCollection services, IHostingEnvironment env) {...}
Run Code Online (Sandbox Code Playgroud)

#2

此时 HostingEnvironment 尚未设置:

public Startup(IHostingEnvironment env) {
    HostingEnvironment = env; // <-- is null
}
Run Code Online (Sandbox Code Playgroud)

#3

这里,Content Root 路径是"C:\Windows\System32" …

c# windows-services asp.net-core

7
推荐指数
0
解决办法
3361
查看次数

ASP.net Core WebAPI 未在 IIS 后面启动

我正在尝试托管 ASP.net Core WebAPI,就像 Microsoft 文档告诉我的那样:Hosting in ASP.NET Core

配置

我在 Windows Server 2016 上运行 IIS 10,其中安装了 Web Deploy 3.6、.Net Core Runtime 2.0.7 和 .NET Core Server Hosting Bundle。

Web API 配置如下:

程序.cs:

public static IWebHost BuildWebHost(string[] args) {
    IConfigurationRoot config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json")
        .Build();

    return WebHost.CreateDefaultBuilder(args)
              .UseConfiguration(config)
              .UseStartup<Startup>()
              .UseKestrel(opt => {
                  opt.Listen(IPAddress.Loopback, 4000);
              })
              .UseIISIntegration()
              .Build();
}
Run Code Online (Sandbox Code Playgroud)

网络配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
    <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Agent.DuZu.Web.dll" stdoutLogEnabled="true" …
Run Code Online (Sandbox Code Playgroud)

c# iis iis-10 asp.net-core

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-core ×2

c# ×2

iis ×1

iis-10 ×1

windows-services ×1