我有一个Asp.Net核心应用程序,可以在IIS中托管或作为WindowsService.
这是Program.cs的一部分
public static class Program
{
public static void Main(string[] args)
{
var hostAsWindowsService = !args.Contains("--web");
var contentRoot = hostAsWindowsService ? Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName) : Directory.GetCurrentDirectory();
var config = new ConfigurationBuilder()
.SetBasePath(contentRoot)
.AddJsonFile("host.json")
.AddCommandLine(args)
.AddEnvironmentVariables()
.Build();
var environment = config["environment"];
var urls = config["server.urls"];
var certificateFilename = config["certificate.filename"];
var certificatePassword = config["certificate.password"];
var hostConfig = new WebHostBuilder()
.UseConfiguration(config)
.UseUrls(urls)
.UseContentRoot(contentRoot)
.UseKestrel(options =>
{
if (!string.IsNullOrWhiteSpace(certificateFilename))
{
options.UseHttps(contentRoot + certificateFilename, certificatePassword);
}
})
.UseStartup<Startup>();
if (!string.IsNullOrWhiteSpace(environment))
{
hostConfig.UseEnvironment(environment);
}
if (hostAsWindowsService)
{
hostConfig
.Build()
.RunAsEycService();
}
else
{
hostConfig
.UseIISIntegration()
.Build()
.Run();
}
}
}
Run Code Online (Sandbox Code Playgroud)
托管为Windows服务时,我无法传递参数,因此默认情况下,项目作为WS托管.我可以在启动我的站点时将参数传递给IIS,以便在Main方法中使用正确的宿主(args.Contains(" - web"))?
我试图将参数传递给Windows服务主机:
1)sc.exe创建MyService binPath ="c:\ Projects\MyService.exe --ws = true"
2)在Windows服务对话框中将"--ws = true"添加到"启动参数"(它实际上不会保存)
小智 0
我知道这是一个老问题 - 但以防万一其他人遇到这个问题(就像我刚才所做的那样)。
请注意,通过使用“ApplicationHost.config”而不是“您的站点 Web.config”,即使在重新发布站点(覆盖 web.config 文件)后,您也可以保留该设置
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |