【问题标题】:IIS Express + HttpPlatformHandler crash when launching ASP.NET 5 RC1 application启动 ASP.NET 5 RC1 应用程序时 IIS Express + HttpPlatformHandler 崩溃
【发布时间】:2015-12-08 13:01:56
【问题描述】:

从 ASP.NET 5 beta 7 升级到 RC1 后,尝试从 Visual Studio 中启动 IIS Express 中的 Web 应用程序以“尝试确定托管应用程序的 DNX 进程的进程 ID 时发生错误”结束。

在 Windows 事件日志中,我可以看到以下错误:

  • 进程“1828”无法启动。端口 = 31115,错误代码 = '-2147024891'。 (EventID 1000;这种情况总是会发生)
  • 警告:无法创建 stdoutLogFile \?\C:_temp_httpplatform-stdout.log_6072_2015128124832.log,错误代码 = -2147024864。 (EventID 1004;这只有时会发生)

HttpPlatformHandler Configuration 中配置的日志文件已创建但完全为空,VS 输出窗口也是如此。

如何诊断失败的原因?

相关版本有:

  • Visual Studio 企业版 2015 更新 1
  • DNX SDK 版本:1.0.0-rc1-update1
  • Windows 7 企业版 SP1(64 位)

web.config 中的相关部分:

<system.webServer>
  <handlers>
    <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
  </handlers>
  <httpPlatform processPath="%DNX_PATH%" 
                arguments="%DNX_ARGS%" 
                stdoutLogEnabled="true" 
                stdoutLogFile="C:\_temp\_httpplatform-stdout.log"
                startupTimeLimit="3600" 
                forwardWindowsAuthToken="false" />
</system.webServer>

也许还有趣的是,最初当我尝试运行从模板创建的全新 ASP.NET 5 Web 应用程序时,它可以工作。现在也不行了。

更新:尽管 IIS Express 启动错误,但返回 502.3 Bad Gateway 错误

【问题讨论】:

  • 尝试将 stdoutLogFile 设置为 `c:\temp`
  • 这个端口上可能正在运行其他东西。运行netstat -a -n -o - 这将显示正在使用的端口和使用该端口的进程的PID。找到您的端口,然后使用 PID 找出它是什么进程。或者尝试不同的端口...
  • 确保“C:_temp\”存在
  • @Boyarincev 当然存在 C:_temp - 正如我所说,日志文件已创建,但为空。
  • @Pawel 我已经验证过了

标签: .net asp.net-core iis-express


【解决方案1】:

所以,一位同事遇到了类似的问题。

我最终检查了项目下的 .vs\config\applicationhost.config 文件。他原来有一个糟糕的 部分。其中两个站点将 https 绑定到“*:44300:localhost”。我删除了一个(也将 http 绑定到 80 的那个),重新编号了站点,他的 IIS Express 现在可以工作了。

【讨论】:

  • 好吧,我在那里找到了 4 个站点 - 一个是某个 WebSite1,然后是我的项目的 3 个站点(具有不同的端口)。我已经清理了它,因此只有一个 id=1 并绑定到 http 和“*:1477:localhost”的条目,但是行为保持不变......
  • 好吧,我的好人最终有 2 个站点:WebSite1 和我的项目。我想知道你是否删除了太多。
  • 另外,一个不错的站点指向我项目的 wwwroot
  • 我删除了 .vs 并让它从头开始重新创建,就像你说的那样,但即使这样也没有用。
【解决方案2】:

我刚刚为我的网站解决了这个问题(“尝试确定托管您的应用程序的 DNX 进程的进程 ID 时发生错误”)——同样的,从 Beta 7 升级到 RC1。我相信这些项目最初是在 Beta 4 或 5 中创建的。

事实证明,我的 web.config 中有来自早期版本的 ASP.Net 测试版的额外垃圾,这些垃圾破坏了请求。

我删除了这些:

  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <remove name="OPTIONSVerbHandler" />
  <remove name="TRACEVerbHandler" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

网站开始在 IIS Express 中正常运行。如果这对您不起作用,您可以尝试创建一个新项目并查看它是否正常工作 - 比较 web.config、startup 和 project.json 文件以查看是否需要进行任何其他更改。

【讨论】:

  • 实际上,我在system.webServer 部分中唯一的处理程序是httpPlatformHandler ...所以这个解决方案也没有乐趣...
【解决方案3】:

当我通过 IIS Express 启动项目时,我遇到了同样的问题。我收到“尝试确定托管您的应用程序的 DNX 进程的进程 ID 时发生错误”。我尝试修复VS,重新安装IIS,但没有任何效果。第二天早上,我在asp toling known issues 上找到了解决方案。只需重新安装 ASP.NET 5 RC1。

【讨论】:

    【解决方案4】:

    我也有同样的问题。

    project.json 文件中。我的代码是

    "version": "1.0.0-rc1-update",
    

    我改成

    "version": "1.0.0-rc1-update1",
    

    因为在launchSettings.json 文件中 我有"sdkVersion": "dnx-clr-win-x64.1.0.0-rc1-update1"

    它必须与launchSettings.json文件中的sdk版本匹配。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-02
      • 2016-09-02
      • 1970-01-01
      相关资源
      最近更新 更多