asp.net-core - 什么是最好的... 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"
有谁知道每种方法的优缺点以及我们应该何时使用哪种方法?
提前谢谢你!
解决方案
通常,我认为您在那里没有太多选择。据我所知,有两种选择:
- 通过指定
.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
本身或运行时可执行文件)的路径。
至于使用这些选项中的哪一个,这实际上取决于您希望如何运行您的应用程序。如果您将应用程序发布为独立的,则运行时已经包含在内,您这样做是为了独立于可能安装在机器上的全局运行时。如果您将应用程序发布为依赖于框架,则依赖于机器上可用的框架(也可以集中更新等)。
推荐阅读
- c - 编译时与外部变量的链接问题?
- jenkins - 在使用 jenkins x 在 kubernetes 上创建环境时,由于 POST https://api.github.com/user/repos: 404 Not Found [] 导致无法创建存储库
- angular - Angular 7 试图在同一个 *ngFor 中发出 2 个 http get 请求
- ruby-on-rails - 如何将符号转换为字符串(即带前导:) ruby to_yaml
- elasticsearch - elasticsearch内部如何使用scroll_id
- c# - 选择通过 ComboBox 设置的设置
- c# - 如何实现 Int32 的模拟?
- python - 服务提供者在 Django 中发起单次注销
- c# - C# DLL 的平台相关编译
- asp.net - 解决 Azure 应用服务中的 .NET TypeLoadExceptions