将ASP.NET Core应用程序部署到IIS

时间:2018-02-18 12:27:59

标签: asp.net iis asp.net-core-mvc web-deployment asp.net-core-2.0

互联网上有很多关于将.NET核心应用程序部署到IIS服务器的文章,但我仍然无法找到以下问题的明确答案:

  • IIS后面运行的dotnet.exe进程的生命周期是多少?我想与“经典”IIS托管池相比,dotnet进程在一段空闲时间后不会停止。
  • 现在我无法重新上传正在运行的应用程序,因为dotnet.exe进程正在使用某些文件。如何解决这个问题?当我在同一台服务器上运行多个.NET Core应用程序时,我不能简单地终止这个过程...是的,我知道在容器中运行每个网站可以解决这个问题,但我的Windows Server机器上没有Docker我读过几篇文章,人们说在Windows上运行Docker是一种移动。
  • dotnet publish 命令是否支持MS Deploy发布? VSTS上有一些可用于此类发布的插件,但我希望能够从我的Visual Studio中执行相同的操作。还有很多关于发布的教程,但是所有这些教程都展示了如何将网站发布到本地文件夹,而不是远程服务器。

感谢。

2 个答案:

答案 0 :(得分:1)

它不是托管代码,也就是说IIS没有加载模块来运行它,就像传统的ASP.NET应用程序一样,但是生命周期仍然存在像IIS托管的任何其他网站一样到应用程序池。无论长短,都可以按照您的需要配置应用程序池。

同样,应用程序池在启动和停止方面都很重要。您的每个核心应用都应该在自己的应用池中运行,这意味着您可以独立启动/停止每个应用。

是的,您仍然可以使用Web Deploy。部署与正在部署的完全分开。 IIS中站点的初始配置以及发布期间发生的实际构建会考虑所有特定于Core的差异。 Web部署只是移动文件。

答案 1 :(得分:0)

我不相信我是这个问题的专家,但我可以分享我在IIS后面托管.net core web api的经验。

OT,与Kestrel相比,我的应用程序(以及我的所有POC应用程序)在IIS上托管时获得了大约40%的rps。

  • 我使用了一些主动/主动的变体,不,应用程序的生命周期与闲置时间无关
  • 由于我的设置,我从来不必担心这个问题,但是我没有看到一条不重启服务的方法
  • 通过.net核心cli工具进行部署实际上非常简单和强大。由于您没有进行docker化,添加一些powershell远程处理/ invokebuild,可以真正为您提供所需的所有部署自动化。