首页 > 解决方案 > 什么是最好的... ASP.NET Core 模块 processPath 到 .exe 或到 .dll

问题描述

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

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

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

有谁知道每种方法的优缺点以及我们应该何时使用哪种方法?

提前谢谢你!

标签: asp.net-coreweb-config

解决方案


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

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

这也是文档的建议以及当您从 Visual Studio 或通过 dotnet CLI 发布 ASP.NET Core 应用程序时会自动发生的情况。所以转换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 Core 托管模块实际上并没有任何知识如何启动 .NET Core 应用程序(至少据我所知)。这就是为什么您通常必须指定可执行文件(应用程序.exe本身或运行时可执行文件)的路径。

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


推荐阅读