ASP.NET MVC Web Deploy不会覆盖默认网站

时间:2017-08-23 12:26:50

标签: asp.net-mvc iis

我有一个相当大的ASP.NET MVC项目,我正在尝试部署到远程计算机上的Windows Server 2016 VM。部署的工作原理是,我可以进入IIS管理器并在Views下查看ContentDefault Web Site等,但我无法查看网站本身。它默认为IIS启动页面。

我之前遇到了一些web.config错误,而<modules>中的web.config部分导致了内部500错误。我已经注释掉了以下代码并且它停止了错误:

<modules>
  <remove name="TelemetryCorrelationHttpModule" />
  <add name="TelemetryCorrelationHttpModule" type="Microsoft.AspNet.TelemetryCorrelation.TelemetryCorrelationHttpModule, Microsoft.AspNet.TelemetryCorrelation" preCondition="integratedMode,managedHandler" />
  <remove name="ApplicationInsightsWebTracking" />
  <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
</modules>

但现在Default Web Site默认回到之前的状态,即最初的IIS网站。这不是一个缓存问题,多台计算机/浏览器都在看同一个网站。

以下是根据IIS服务器Default Web Site的屏幕截图:

IIS

我很难过。至少在内部500错误中我知道我的网站导致了这个问题,但这似乎覆盖了我在项目中设置的任何配置。

由于StackOverflow的字符限制,我不得不将ApplicationHost.config复制到pastebin链接中:

https://pastebin.com/0K0TDgTh

我对ASP.NET部署和IIS的体验仅限于今天早上,所以我不确定我在寻找什么,任何建议都会受到赞赏。

1 个答案:

答案 0 :(得分:3)

您可以禁用默认网站并为您的网站创建新的虚拟主机,而不是覆盖默认网站:

应用程序池

在自己的应用程序池上运行每个应用程序始终是一个好习惯,因此如果一个应用程序失败,它将不会影响在同一服务器上运行的其他应用程序,并且它还允许为每个应用程序选择不同版本的.NET框架应用

要创建应用程序池,请右键单击“Application Pools”,然后单击“Add Application Pool”,填写名称并选择.NET framework版本。

如果您的应用程序是32位或包含32位模块,则需要启用32位应用程序支持,为此,右键单击应用程序池列表中新创建的应用程序池,然后单击“高级设置”并将“启用32位应用程序”设置为True:

Enable 32-Bit Applications

您可能要在此处配置的其他设置是启动模式和流程模型标识,但默认设置应该可以满足您的需求。

设置您的网站

点击默认网站名称,然后点击右栏“管理网站”部分下的“停止”,停止默认网站。

然后,右键单击“站点”和“添加网站”,填写名称并选择之前创建的应用程序池,选择您的端口(通常为80),保留IP地址并选择物理路径你的网站。

New IIS Web Site window

单击“确定”并忽略有关使用与现有网站相同的端口的任何警告。您的网站应该从http://localhost

启动并运行

现在,您需要删除默认网站(右键单击,删除),或者您需要将端口更改为您已用于新网站的80以外的端口,更改端口,右键单击默认网站然后“编辑绑定”并删除绑定或编辑它以更改端口。

网络部署

Web Deploy可能已经为您工作,但要确保,请右键单击您的网站名称,然后再次为新站点配置Web Deploy。