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

16

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

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

在服务器上的IIS 8.5中,我创建了一个应用程序,该应用程序使用一个应用程序池,该应用程序池使用进程模型->标识为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

在此输入图像描述

当我进入部署目录下的 my approot 文件夹时,我可以运行 web.cmd 网络服务器,然后通过创建的端口访问我的网站。

http://localhost:5000/

并且这个网站正常工作。

如果我查看我的IIS服务器角色已安装的组件

enter image description here

已安装ASP.NET 4.5。

enter image description here

应用程序池是正确的。

使用相同的应用程序池在IIS中正确运行ASP.NET 4网站。

我的问题 1.为什么IIS说web.config无效? 2.如何使ASP.NET 5 Beta 8 网站在IIS上运行?

4个回答

16

是否可以在没有Web平台安装程序的情况下进行安装? - devfric
@user2510676 在http://www.iis.net/downloads/microsoft/httpplatformhandler的下载部分还列出了MSI包。 - Lex Li
感谢您提供 RC2 更改的提示,加一分。 - Vahid Amiri
1
由于末尾有一个],导致 GitHub 链接失效。 - crh225

7
ASP.NET 5 Beta 8 的托管模型已经改变,现在依赖于 IIS 的 HttpPlatformHandler。您会发现您的 web.config 文件在 wwwroot 文件夹或您的应用程序中包含对它的引用。
<?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 发布说明

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

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

请注意:HttpPlatformHandler 仅支持 IIS 8 +。因此,这意味着像 Windows Server 2008 R2 这样的旧操作系统,其中包含 IIS 7.5,你将无法使用 IIS 托管 ASP.NET 5 网站,因为这些版本不支持 HttpPlatformHandler。


2

1
我的项目使用:ASP.NET Core Web Application (.NET Framework)。这是因为我计划在IIS和Windows上使用,所以不需要完全采用Core。我找到了这个链接: 安装 .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框架,那么我仍然需要它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接