【问题标题】:net5 ASP Application for IIS and Windows Service用于 IIS 和 Windows 服务的 net5 ASP 应用程序
【发布时间】:2021-12-02 00:08:46
【问题描述】:

对于不同的部署环境,我们希望通过 IIS 或通过 Windows 服务发布我们的应用程序。

从这个thread 中我们了解到,我们必须从Program.cs -> CreateHostBuilder() -> ConfigureWebHostDefaults() 中删除另一个UseABC() 选项。

要明确一点:UseIIS()UseKestrel() 应该在那里启用(事实上,最后一个获胜,但这不是重点)。

是这个吗?

没有比创建两个不同的部署包更好的选择吗?

理想情况下,应该有一组二进制文件同时支持 IIS 和 Windows 服务作为托管环境。有什么想法吗?

【问题讨论】:

  • 为什么?对于 Kestrel 与 IIS,您需要 2 个不同的包和 2 个不同的源代码(例如,Kestrel 不使用 web.config,而 IIS 需要它,并且正如您所见,您需要不同的中间件,具体取决于要使用的服务器)。您还应该真正考虑这种方法,您可以根据服务器找到不同的行为,这会使调试错误变得更加复杂
  • web.config 文件也会自动为红隼部署创建。我没有尝试删除它,但它也不疼。所以代码中唯一的变化是选择目标环境的这一行。如果除了切换这条线别无其他方法 - 好的。但除此之外 - 目前 - 没有必要更改任何其他内容......
  • 我从来没有这样做过,但也许这有帮助? stackoverflow.com/questions/42272021/… - 自从我在 2016 年开始研究 ASP.NET Core 以来,我很幸运几乎不用担心 IIS :)
  • @CamiloTerevinto 感谢您的链接;但是那里的信息已经过时了,就像以前在 IIS 中托管时一样,内部也使用了 Kestrel - 因此它被称为UseIISIntegration()。自从 net core 3 以来,这种情况现在发生了变化。?
  • 我建议您在新应用中尝试一下,因为老实说,我看不出投票最多的答案会如何在版本之间发生变化。 IIS 在启动应用程序时很可能仍会设置这些环境变量。

标签: c# asp.net-core iis windows-services


【解决方案1】:

使用.ConfigureKestrel() 而不是UseKestrel() 解决了这个问题!

参考:https://stackoverflow.com/a/63505860/2477582

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    相关资源
    最近更新 更多