【问题标题】:Possible to host .NET Core App inside IIS Site's Application?可以在 IIS 站点的应用程序中托管 .NET Core 应用程序吗?
【发布时间】:2018-05-28 14:40:34
【问题描述】:

我知道可以使用 IIS 站点来托管 .NET Core 应用程序,而且非常简单。但是,我需要将它托管在该站点的应用程序中。

我遵循此处列出的指南: https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x

当我按照指南使用站点作为主机时,它可以完美运行。但是,当我尝试在该站点的应用程序 inside 内托管 .Net Core 应用程序时,我会遇到配置错误,例如我的 web.config 中的错误抱怨重复条目,甚至如果我在 web.config 中更改名称或将其注释掉。

如果可能的话,在 IIS 站点内的 IIS 应用程序内托管 .NET Core 应用程序的过程是什么?

【问题讨论】:

    标签: .net iis .net-core iis-7.5


    【解决方案1】:

    在 Visual Studio 中返回您的项目,并在其根目录下创建一个 web.config 文件,

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.webServer>
        <handlers>
          <remove name="aspNetCore"/>
          <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet" arguments=".\WebApplication2.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
      </system.webServer>
    </configuration>
    

    记得修改它的字符串来匹配你自己的网络应用(比如arguments)。

    这里多余的&lt;remove&gt;标签应该避免重复项的配置错误。

    通过将您自己的 web.config 放在那里,它还会阻止 Visual Studio 或 dotnet publish 为您创建这样的文件。从他们那里生成的副本缺少&lt;remove&gt; 标签。

    【讨论】:

      【解决方案2】:

      我看到其他人说“编辑层次结构中更高的 web.config 文件”,但我找不到它。我终于能够找到它,通过使用 IIS 中的“内容视图”,右键单击主站点的 web.config,转到文件资源管理器中的位置,然后注释掉那里的重复条目。

      【讨论】:

      • “注释掉重复的条目”是最糟糕的方式。了解如何在其前面添加&lt;remove&gt; 标签。您还需要将其追溯到您的代码库,以便在那里进行更改。否则,如果您重新发布该应用,该问题将再次发生。
      • @LexLi 我的代码库中没有包含 web.config,它是在发布时生成的。我尝试在它之前添加一个&lt;remove/&gt;,甚至是一个&lt;clear/&gt;,但这不起作用。我现在有两个应用程序在上面运行,并且每个都发布了几次,没有任何问题。重启服务器后他们也成功恢复了。
      • 就像我说的你需要学习正确的语法。如果您将 web.config 放入项目中,则不会使用生成的副本。
      • 我也试过了,事实上,使用与我之前评论相同的策略,但它没有奏效。如果您认为我的做法不是最佳做法,您有什么建议?
      • 我给了一个答案。
      猜你喜欢
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多