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

时间:2017-12-17 14:16:05

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

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

3 个答案:

答案 0 :(得分: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的解决方案资源管理器中,右键单击项目并选择属性。选择调试标签。从启动下拉列表中选择 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"
        }
    }
}

答案 1 :(得分:1)

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

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

在下面的示例中,我们将站点发布到相对于sln位置的“已发布站点”文件夹中,但仅用于Debug版本。

我还假设构建过程所花费的时间比旋转过程所花费的时间长。

  1. 创建一个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>
    
  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>
    

答案 2 :(得分:0)

如果没有部署/发布,则无法实现。但您可以考虑使用自动部署作为解决方法。例如,您可以使用Auto Deployextending the MSBuild process等扩展程序。