【问题标题】:What is best... ASP.NET Core Module processPath to .exe or to .dll什么是最好的... ASP.NET Core 模块 processPath 到 .exe 或到 .dll
【发布时间】:2020-12-27 17:16:10
【问题描述】:

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

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

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

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

谢谢你!

【问题讨论】:

    标签: asp.net-core web-config


    【解决方案1】:

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

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

    the documentation suggests 也是如此,当您从 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 环境变量中。否则,您也可以指定它的绝对路径。

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

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

    【讨论】:

    • 您好,感谢您的宝贵时间! :) 关于 processPath 和论点,您是对的...我表达错了...但是,我想问一下您在上面回答的确切内容...当您将其作为独立或作为框架运行时,幕后会发生什么-依赖,当我们在 iis 中托管 net.core 应用程序时,哪个更好
    • 我想补充一点,这仅适用于“便携式”版本。如果专门为显式目标运行时(例如 x64)发布,则在 web.config 的 processPath 中生成具有相应设置的可执行文件(例如,对于 x64 的 .exe 文件)也在此处完成。
    • @Grimm “如果专门为明确的目标运行时发布” - 这就是自包含应用程序所指的内容。
    • 不,这是两件不同的事情。您可以部署依赖于框架但仅用于 x64。请参阅docs.microsoft.com/en-us/dotnet/core/deploying(“...特定平台的框架相关可执行文件...”)。当你使用那个时,你会在你的 web.config 的 processPath 中得到一个 exe 文件,虽然它不是一个独立的应用程序。
    • @Grimm 啊,酷,我学到了一些新东西——谢谢,很高兴知道! :)
    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    相关资源
    最近更新 更多