我有一个相当大的ASP.NET MVC项目,我正在尝试部署到远程计算机上的Windows Server 2016 VM。部署的工作原理是,我可以进入IIS管理器并在Views
下查看Content
,Default 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
的屏幕截图:
我很难过。至少在内部500错误中我知道我的网站导致了这个问题,但这似乎覆盖了我在项目中设置的任何配置。
由于StackOverflow的字符限制,我不得不将ApplicationHost.config
复制到pastebin链接中:
我对ASP.NET部署和IIS的体验仅限于今天早上,所以我不确定我在寻找什么,任何建议都会受到赞赏。
答案 0 :(得分:3)
您可以禁用默认网站并为您的网站创建新的虚拟主机,而不是覆盖默认网站:
应用程序池
在自己的应用程序池上运行每个应用程序始终是一个好习惯,因此如果一个应用程序失败,它将不会影响在同一服务器上运行的其他应用程序,并且它还允许为每个应用程序选择不同版本的.NET框架应用
要创建应用程序池,请右键单击“Application Pools”,然后单击“Add Application Pool”,填写名称并选择.NET framework版本。
如果您的应用程序是32位或包含32位模块,则需要启用32位应用程序支持,为此,右键单击应用程序池列表中新创建的应用程序池,然后单击“高级设置”并将“启用32位应用程序”设置为True:
您可能要在此处配置的其他设置是启动模式和流程模型标识,但默认设置应该可以满足您的需求。
设置您的网站
点击默认网站名称,然后点击右栏“管理网站”部分下的“停止”,停止默认网站。
然后,右键单击“站点”和“添加网站”,填写名称并选择之前创建的应用程序池,选择您的端口(通常为80),保留IP地址并选择物理路径你的网站。
单击“确定”并忽略有关使用与现有网站相同的端口的任何警告。您的网站应该从http://localhost
启动并运行现在,您需要删除默认网站(右键单击,删除),或者您需要将端口更改为您已用于新网站的80以外的端口,更改端口,右键单击默认网站然后“编辑绑定”并删除绑定或编辑它以更改端口。
网络部署
Web Deploy可能已经为您工作,但要确保,请右键单击您的网站名称,然后再次为新站点配置Web Deploy。