IIS 将 ASP.NET 5 BETA 8 站点部署到 IIS 时出现 HTTP 错误 500.19 - 内部服务器错误

问题描述 投票:0回答:4

我创建了一个新的 ASP.NET5 Beta 8 Web 应用程序。

我将其发布到本地文件系统,并将这些文件复制到我的服务器(Windows Server 2012 R2)

在服务器上的 IIS 8.5 中,我创建一个使用应用程序池的应用程序,该应用程序池使用进程模型 -> 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方法来确定安装了哪个版本的.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 中运行?

iis deployment visual-studio-2015 asp.net-core iis-8
4个回答
16
投票

HttpPlatformHandler 是先决条件,因此您需要安装它,

更新:对于 RC2 及以上版本,需要一个名为 ASP.NET Core 模块的新模块来代替 HttpPlatformHandler,您可以阅读此公告

由于这是对 HttpPlatformHandler 和 ASP.NET Core 模块的误解的根源,我写了一篇文章来澄清历史。


7
投票

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% 翻译为“.. pproot\web.cmd”

ASP.NET BETA 8 发行说明

现在可以使用配置为转发到 ASP.NET 5 Kestrel 服务器的 IIS HttpPlatformHandler 在 IIS 中托管 ASP.NET 5 应用程序。 HttpPlatformHandler 是一个本机 IIS 模块,需要由管理员在运行 IIS 的服务器上安装(安装程序:x86、x64)。它还已包含在 beta8 Web 工具更新中,用于 IIS Express 上的本地开发。此本机 IIS 模块管理外部应用程序主机进程(在本例中为 dnx.exe)的启动以及将请求从 IIS 路由到托管进程。

您可以使用 Microsoft Web Platform 安装程序安装 HttpPlatformHandler,或者使用来自 Microsoft IIS 站点的下载链接上的单独 x86 / x64 安装程序:link

注意:HttpPlatformHandler 仅支持 IIS 8 +。因此,这意味着对于诸如附带 IIS 7.5 的 Windows Server 2008 R2 之类的较旧操作系统,您将无法使用 IIS 托管 ASP.NET 5 网站,因为这些版本不支持 HttpPlatformHandler。


2
投票

使用 ASP.Net Core 1.0,您必须在 IIS 主机上安装

ASP.NET Core Module
。您可以在这里获取

https://stackoverflow.com/a/38119924/1821792


1
投票

我的项目使用:ASP.NET Core Web 应用程序(.NET Framework)
这是因为我打算使用 IIS 和 Windows,所以不需要全力以赴 Core

我找到了此链接:安装 .NET Core Windows Server 托管捆绑包
您将在那里找到此链接:.NET Core Windows Server 托管
上面的第二个链接将自动尝试下载并安装“Microsoft .NET Core 1.0.0 Windows Server Hosting”捆绑包。
我喜欢第一个链接,因为它实际上解释了您为什么需要它。

在我的服务器上安装后,我的网站终于开始工作了!
不再出现 HTTP 错误 500.19 :)
我将我的应用程序池保留为 .net 4(我按照说明将其设置为“无托管代码”)。我还没有尝试过,但我想既然我选择使用 .NET Framework,我仍然需要它。

© www.soinside.com 2019 - 2024. All rights reserved.