【问题标题】: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
【问题描述】:
【问题讨论】:
标签:
.net
iis
asp.net-core
c#-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 的 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 位置,但仅用于调试构建。
我还假设构建过程所需的时间比停止该过程所需的时间要长。
-
创建一个 PreBuild 目标,在发布文件夹中创建 app_offline.htm 文件。
<Target Name="PreBuild" BeforeTargets="PreBuildEvent" Condition="'$(Configuration)'=='Debug'">
<Exec Command="IF EXIST "$(SolutionDir)published-site" (
 echo. 2>"$(SolutionDir)published-site\app_offline.htm"
)" />
</Target>
-
创建一个 PostBuild 目标,删除 app_offline.htm 文件,然后调用 dotnet publish。
<Target Name="PostBuild" AfterTargets="PostBuildEvent" Condition="'$(Configuration)'=='Debug'">
<Exec Command="IF EXIST "$(SolutionDir)published-site\app_offline.htm" (
 del "$(SolutionDir)published-site\app_offline.htm"
)

dotnet publish --no-build --no-restore "$(ProjectPath)" -c $(ConfigurationName) -o "$(SolutionDir)published-site"" />
</Target>