什么是最好的... ASP.NET Core Module processPath to .exe or to .dll

What is best... ASP.NET Core Module processPath to .exe or to .dll

当您发布 Asp.net 核心应用程序时,它会生成具有以下配置的 web.config

<aspNetCore processPath=".\MyApplication.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />

您可以使用 processPath=".\MyApplication.exe"processPath=".\MyApplication.dll"

有谁知道每一个的优缺点以及我们应该什么时候使用哪个?

提前致谢!

通常,我认为您在那里没有太多选择。据我所知有两种选择:

  • 运行 通过指定 .exe.
  • 路径的自包含应用程序
  • 运行 依赖于框架的应用程序,方法是指定 dotnet 可执行文件的路径并将路径传递给应用程序 DLL。

这也是 the documentation suggests 以及当您从 Visual Studio 或通过 dotnet CLI 发布 ASP.NET 核心应用程序时自动发生的事情。所以转换后的web.config应该有以下配置之一:

<!-- self-contained application -->
<aspNetCore processPath=".\MyApp.exe" … />

<!-- framework-dependent application -->
<aspNetCore processPath="dotnet" arguments=".\MyApp.dll" … />

此处依赖于框架的应用程序配置假设dotnet 可执行文件位于PATH 环境变量中。否则,您也可以指定一个绝对路径。

我个人从未见过 <aspNetCore processPath=".\MyApp.dll" … /> 如果它有效,我会感到惊讶,因为 IIS 的 ASP.NET 核心托管模块实际上并不知道如何启动 .NET Core 应用程序(位于至少据我所知)。这就是为什么您通常必须指定可执行文件的路径(应用程序的 .exe 本身,或 运行time 可执行文件)。

至于使用这些选项中的哪一个,这实际上取决于您希望如何 运行 您的应用程序。如果您将应用程序发布为独立的,那么 运行time 已经包含在内,您这样做是为了独立于可能安装在机器上的全局 运行time。如果您将应用程序发布为依赖于框架,则您依赖于机器上可用的框架(也可以集中更新等)。