【问题标题】:How to host my ASP.NET core site on IIS (in development environment, without deploy / publish)如何在 IIS 上托管我的 ASP.NET 核心站点(在开发环境中,无需部署/发布)
【发布时间】:2018-05-31 01:25:26
【问题描述】:

我曾经在我的开发环境中的本地 IIS 上托管我的 ASP.NET 站点(非核心)。
这样做有助于我避免使用 IIS Express(每次启动和停止 IIS Express 都非常不舒服)。
这样,我所要做的就是重建和刷新网站。
我的目标是以同样的方式使用 ASP.NET 核心。
我读到了这个:https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x,但进展并不顺利。
我正在寻找的是在每次 C# 代码更改(需要构建)后无需部署/发布即可。
我使用 ASP.NET 核心 2 和 IIS 10

【问题讨论】:

标签: .net iis asp.net-core c#-3.0


【解决方案1】:

没有部署/发布是不可能的。但是您可以考虑使用自动部署作为解决方法。例如,您可以使用一些扩展名,如Auto Deploy,或extending the MSBuild process

【讨论】:

    【解决方案2】:

    如果需要调试应用程序,可以将 ASP.NET Core 应用程序配置为默认的 IIS 启动。

    参考: https://docs.microsoft.com/aspnet/core/host-and-deploy/iis/development-time-iis-support#configure-the-project

    创建一个新的启动配置文件以添加开发时 IIS 支持。在 Visual Studio 的 Solution Explorer 中,右键单击项目并选择 Properties。选择调试标签。从 启动 下拉列表中选择 IIS。确认使用正确的 URL 启用了启动浏览器功能。

    或者

    或者,手动将启动配置文件添加到应用中的 launchSettings.json 文件:

    {
    "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iis": {
            "applicationUrl": "http://localhost/WebApplication2",
            "sslPort": 0
        }
    },
    "profiles": {
        "IIS": {
            "commandName": "IIS",
            "launchBrowser": "true",
            "launchUrl": "http://localhost/WebApplication2",
            "environmentVariables": {
                "ASPNETCORE_ENVIRONMENT": "Development"
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      您可以利用 ASPNETCore 模块的 app_offline.htm 功能并将其合并到您的构建过程中。

      但您需要从该文件夹(而不是项目文件夹)发布您的站点并运行 IIS 站点/虚拟应用程序。

      在下面的示例中,我们将站点发布到文件夹“published-site”,相对于 sln 位置,但仅用于调试构建。

      我还假设构建过程所需的时间比停止该过程所需的时间要长。

      1. 创建一个 PreBuild 目标,在发布文件夹中创建 app_offline.htm 文件。

        <Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="'$(Configuration)'=='Debug'">
          <Exec Command="IF EXIST &quot;$(SolutionDir)published-site&quot; (&#xD;&#xA;  echo. 2&gt;&quot;$(SolutionDir)published-site\app_offline.htm&quot;&#xD;&#xA;)" />
        </Target>
        
      2. 创建一个 PostBuild 目标,删除 app_offline.htm 文件,然后调用 dotnet publish。

        <Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)'=='Debug'">
          <Exec Command="IF EXIST &quot;$(SolutionDir)published-site\app_offline.htm&quot; (&#xD;&#xA;  del &quot;$(SolutionDir)published-site\app_offline.htm&quot;&#xD;&#xA;)&#xD;&#xA;&#xD;&#xA;dotnet publish --no-build --no-restore &quot;$(ProjectPath)&quot; -c $(ConfigurationName) -o &quot;$(SolutionDir)published-site&quot;" />
        </Target>
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-03-04
        • 2017-06-16
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 2019-10-14
        相关资源
        最近更新 更多