IIS Express + HttpPlatformHandler 在启动 ASP.NET 5 RC1 应用程序时崩溃

8
在将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,ErrorCode = -2147024864。 (EventID 1004;这只有时会发生) 如HttpPlatformHandler Configuration所配置的日志文件确实会被创建,但是它们是完全空的,就像VS输出窗口一样。 如何诊断故障的原因? 相关版本为: - Visual Studio Enterprise 2015 Update 1 - DNX SDK版本:1.0.0-rc1-update1 - Windows 7 Enterprise 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错误。


1
尝试将stdoutLogFile设置为c:\ temp \ - Tratcher
1
可能是该端口上运行了其他程序。运行 netstat -a -n -o 命令,它会显示正在使用该端口的进程的 PID。找到你的端口,然后使用 PID 查找对应的进程。或者尝试使用另一个端口... - Pawel
确保 "C:_temp" 目录存在。 - Stas Boyarincev
@Boyarincev 当然存在 C:_temp - 正如我所说,日志文件已经创建,但是为空。 - metalheart
@Pawel 我已经验证过了。 - metalheart
4个回答

1
我刚刚为我的网站解决了这个问题(“尝试确定托管应用程序的DNX进程的进程ID时出错”)- 同样的情况,从Beta 7升级到RC1。 我相信这些项目最初是在Beta 4或5中创建的。
事实证明,在早期版本的ASP.Net beta中,我的web.config中有额外的垃圾数据,这些数据混淆了请求。
我删除了这些内容:
  <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文件,看看是否需要进行其他更改。


1
实际上,在 system.webServer 部分中,我的唯一处理程序是 httpPlatformHandler ... 所以这个解决方案也没有成功... - metalheart

1

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

最终我检查了项目下的.vs\config\applicationhost.config文件。他的文件中有一个错误的<sites>部分,其中两个站点将https绑定到“*: 44300:localhost”。我删除了其中一个(该站点还将http绑定到80),重新编号站点,然后他的IIS Express现在可以正常工作了。


我在那里找到了4个网站 - 其中一个是某个WebSite1,然后还有3个我的项目网站(使用不同的端口)。我已经清理过了,所以只有一个id=1的条目,并绑定到http和“*:1477:localhost”,但行为仍然保持不变... - metalheart
好的,我的好东西最终有两个站点:WebSite1和我的项目。我想知道你是否删除了太多。 - JonTheMon
此外,唯一一个不错的网站指向了我的项目的wwwroot目录。 - JonTheMon
1
我删除了.vs文件夹并让它从头开始重新创建,就像你说的那样,但即使这样也没有起作用。 - metalheart

0

我有同样的问题。

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 版本匹配。


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

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