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

时间:2015-10-20 11:18:33

标签: iis deployment visual-studio-2015 asp.net-core iis-8

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

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

在服务器上的IIS 8.5中,我创建了一个使用使用Process Model的应用程序池的应用程序 - >身份为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 - 内部服务器错误

     

无法访问请求的页面,因为页面的相关配置数据无效。

enter image description here

我正在使用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

enter image description here

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

http://localhost:5000/

此网站正常运行。

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

enter image description here

安装了ASP.NET 4.5。

enter image description here

应用程序池是正确的。

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

我的问题 1.为什么IIS说web.config无效? 2.如何让IIS 5 Beta 8站点在IIS中运行?

4 个答案:

答案 0 :(得分:14)

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]

答案 1 :(得分: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%转换为&#34; .. \ approot \ web.cmd&#34;

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 Platform安装程序安装HttpPlatformHandler,也可以在Microsoft的IIS站点link下载链接上单独安装x86 / x64安装程序。

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

答案 2 :(得分:1)

我的项目使用: ASP.NET核心Web应用程序(.NET Framework)
这是因为我打算使用IIS和Windows,因此无需全面开启核心

我找到了这个链接:Install the .NET Core Windows Server Hosting Bundle
在那里你会找到这个链接:.NET Core Windows Server Hosting
上面的第二个链接将自动尝试下载并安装&#34; Microsoft .NET Core 1.0.0 Windows Server Hosting&#34;捆绑。
我喜欢1st Link,因为它实际上解释了为什么你需要它。

在我的服务器上安装后,我的网站终于开始工作了! 没有更多HTTP错误500.19 :)
我将我的应用程序池保留为.net 4(我 将其设置为&#34; 无托管代码&#34;)正如指示所说的那样。我还没有尝试过,但我想,因为我选择使用.NET Framework,我仍然需要它。

答案 3 :(得分:1)

使用 ASP.Net Core 1.0 ,您必须在IIS主机上安装ASP.NET Core Module。你可以get it here

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