IIS 将 ASP.NET 5 BETA 8 站点部署到 IIS 会出现 HTTP 错误 500.19 - 内部服务器错误
Posted
技术标签:
【中文标题】IIS 将 ASP.NET 5 BETA 8 站点部署到 IIS 会出现 HTTP 错误 500.19 - 内部服务器错误【英文标题】:IIS Deployed ASP.NET 5 BETA 8 site to IIS gives HTTP Error 500.19 - Internal Server Error 【发布时间】:2015-10-20 11:18:33 【问题描述】:我创建了一个新的 ASP.NET5 Beta 8 Web 应用程序。
我将它发布到我的本地文件系统并将这些文件复制到我的服务器,即 Windows Server 2012 R2
在服务器上的 IIS 8.5 中,我创建了一个使用应用程序池的应用程序,该应用程序池使用 Process Model -> Identity as LocalSystem。
我将路径指向复制的已发布应用程序的 wwwroot 子文件夹
我的 web.config
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
</system.webServer>
</configuration>
直接在服务器上运行 URL 或在 IIS 中点击浏览
http://localhost/WebApplication1
我收到以下错误
HTTP 错误 500.19 - 内部服务器错误
请求的页面无法访问,因为该页面的相关配置数据无效。
我正在使用 Visual Studio 2015 ASP.NET 5 Beta8 Web 应用程序模板中的默认 web.config,所以我只能认为它可能是 .net 版本。
我使用MSDN method 来确定安装了哪个版本的 .NET 4,它对应于 .NET Framework 4.5.1
在我的 project.json 中有
"frameworks":
"dnx451":
,
我在发布时编译为Win CLR
当我转到部署目录中的 approot 文件夹时,我可以运行 web.cmd Web 服务器,然后通过创建的端口访问我的网站。
http://localhost:5000/
这个网站可以正常工作。
如果我查看我的 IIS 服务器角色安装的组件
已安装 ASP.NET 4.5。
应用程序池正确。
ASP.NET 4 网站使用相同的应用程序池在 IIS 中正确运行
我的问题 1、为什么IIS说web.config无效? 2. 如何让 ASP.NET 5 Beta 8 站点在 IIS 中运行?
【问题讨论】:
【参考方案1】:HttpPlatformHandler 是一个先决条件,所以你需要安装它,
https://azure.microsoft.com/en-us/blog/announcing-the-release-of-the-httpplatformhandler-module-for-iis-8/
[更新:对于 RC2 及更高版本,需要一个新模块而不是 HttpPlatformHandler,https://github.com/aspnet/Announcements/issues/164]
【讨论】:
是否可以不使用Web Platform安装程序进行安装? @user2510676 iis.net/downloads/microsoft/httpplatformhandler 的下载部分也列出了 MSI 软件包。 加一个提醒 RC2 变化 github 链接由于末尾的 ] 而被破坏【参考方案2】:ASP.NET 5 Beta 8 的托管模型已更改,现在依赖于 IIS HttpPlatformHandler。
您会注意到 wwwroot 文件夹中的 web.config 或您的应用程序包含对它的引用。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
上面的 %DNX_PATH% 转换为“..\approot\web.cmd”
ASP.NET BETA 8 release notes
现在将使用配置为转发到 ASP.NET 5 Kestrel 服务器的 IIS HttpPlatformHandler 来实现在 IIS 中托管 ASP.NET 5 应用程序。 HttpPlatformHandler 是一个本地 IIS 模块,需要管理员在运行 IIS 的服务器上安装(安装程序:x86、x64)。它还包含在用于 IIS Express 本地开发的 beta8 Web 工具更新中。这个本机 IIS 模块管理外部应用程序宿主进程(在本例中为 dnx.exe)的启动以及从 IIS 到宿主进程的请求路由。
您可以使用 Microsoft Web 平台安装程序或单独的 x86 / x64 安装程序安装 HttpPlatformHandler,下载链接来自 Microsoft 的 IIS 站点:link。
注意:HttpPlatformHandler 仅支持 IIS 8 +。因此,这意味着对于 Windows Server 2008 R2 等带有 IIS 7.5 的旧操作系统,您将无法使用 IIS 托管 ASP.NET 5 网站,因为这些版本不支持 HttpPlatformHandler。
【讨论】:
【参考方案3】:使用 ASP.Net Core 1.0,您必须在 IIS 主机上安装 ASP.NET Core Module
。你可以get it here。
https://***.com/a/38119924/1821792
【讨论】:
【参考方案4】:我的项目使用:ASP.NET Core Web 应用程序 (.NET Framework) 这是因为我打算使用 IIS 和 Windows,所以不需要全力以赴 Core。
我找到了这个链接:Install the .NET Core Windows Server Hosting Bundle 在那里你会找到这个链接:.NET Core Windows Server Hosting 上面的第二个链接将自动尝试下载并安装“Microsoft .NET Core 1.0.0 Windows Server Hosting”捆绑包。 我喜欢第一个链接,因为它实际上解释了你为什么需要它。
在我的服务器上安装后,我的网站终于开始工作了! 不再出现 HTTP 错误 500.19 :) 我按照说明将我的应用程序池保留为 .net 4(我确实不将其设置为“无托管代码”) .我没有尝试过,但我认为既然我选择使用 .NET Framework,我仍然需要它。
【讨论】:
以上是关于IIS 将 ASP.NET 5 BETA 8 站点部署到 IIS 会出现 HTTP 错误 500.19 - 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章
如何确定 ASP.NET 站点 (IIS) 上的用户数?他们的信息呢?
如何使用 url 重写将位置数据存储在我的 asp.net 站点上所有页面的 url 中?