首页 文章

如何在IIS上托管我的ASP.NET核心站点(在开发环境中,没有部署/发布)

提问于
浏览
3

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

3 回答

  • 1

    如果需要调试应用程序,可以将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 . 选择 Debug 选项卡 . 从 Launch 下拉列表中选择 IIS . 确认使用正确的URL启用了 Launch browser 功能 .

    要么

    或者,手动将启动配置文件添加到应用程序中的 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"
            }
        }
    }
    
  • 0

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

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

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

    我还假设构建过程花费的时间比关闭过程所花费的时间要长 .

    • 创建一个PreBuild目标,在publish文件夹中创建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>
    
    • 创建一个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>
    
  • 2

    没有部署/发布,就不可能 . 但您可以考虑使用自动部署作为解决方法 . 例如,您可以使用某些扩展名,如Auto Deployextending the MSBuild process .

相关问题