尝试确定托管应用程序的DNX进程的进程ID时发生错误

时间:2015-10-16 09:02:02

标签: c# asp.net-core

我在尝试启动应用程序时收到此错误消息。

  

尝试确定DNX的进程ID时发生错误   托管您的申请的流程

有没有办法解决问题?

18 个答案:

答案 0 :(得分:151)

对我来说,问题是通过关闭Visual Studio,删除

来解决的
project.lock.json

再次启动Visual Studio。

编辑:我使用的是RC1。

答案 1 :(得分:34)

Microsoft按照release notes

中的说明更改了托管模型

project.json中替换依赖

  

“Microsoft.AspNet.Server.IIS”:“1.0.0-beta7”

  

“Microsoft.AspNet.Server.Kestrel”:“1.0.0-beta8”

web.config部分的handlers中删除除

之外的所有条目
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />

完整的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>
</configuration>

RC1:使用RC1时,移动解决方案文件夹后出错。删除binobj文件夹后,所有内容都重新运行 正如user764754所指出的那样,只需重新启动Visual Studio也可以提供帮助。

答案 2 :(得分:30)

对于遇到此问题的其他人,在其他解决方案不起作用的情况下 - 我在这个帖子中找到了答案: Forcing to use SSL: An error ocurred attempting to determine the process id of the DNX process hosting your application

我的项目使用或强制执行SSL而不先调试(CTRL + F5),它会要求您生成本地SSL证书,之后调试将起作用并且错误将消失。

答案 3 :(得分:11)

对于它的价值,这是一个generic error message,它可以作为httpPlatformHandler无法启动给定​​可执行文件的任何问题的红色鲱鱼(在这种情况下为dnx)

在我的情况下,我收到此错误是由于误解了launchSettings.json文件的直接结果。我试图为我的应用程序启用https端点,并错误地复制了我的applicationUrl中的sslport。据我所知,applicationUrl应该是应用程序的http主机名/端口,通过填写sslPort,它只是配置IIS Express环境以侦听sslPort中提供的端口上applicationUrl中给出的主机名上的https。

例如:

  "iisSettings": {
     "windowsAuthentication": false,
     "anonymousAuthentication": true,
     "iisExpress": {
       "applicationUrl": "http://localhost:44000",
       "sslPort": 44300
      }
  }

在localhost上提供以下两个端点。

  • Http over 44400
  • 通过端口44300

如果您在applicationUrl和sslPort设置中拥有相同的端口,则会收到与此线程关联的错误。

RC1

对我来说也是如此

答案 4 :(得分:6)

可以升级,我发现我必须查看新的更新模板here

在wwwroot中更新您的web.config以包含:

<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>

您还需要更改项目调试的方式using Kestrel 通过修改project.json:

"commands": {
  "web": "Microsoft.AspNet.Server.Kestrel"
},
"dependencies": {
  "Microsoft.AspNet.IISPlatformHandler": "1.0.0-beta8",
  "Microsoft.AspNet.Server.Kestrel": "1.0.0-beta8",
}

并修改您的hosting.ini

server=Microsoft.AspNet.Server.Kestrel

并将其添加到startup.cs中的Configure方法

// Add the platform handler to the request pipeline.
app.UseIISPlatformHandler(); 

添加这些引用应该允许您运行项目。

答案 5 :(得分:5)

由于项目配置尝试启动https://localhost而不是http,我遇到了这个问题。右键单击web项目,在&#34; Debug&#34;并调整&#34; App URL&#34;是http而不是https。 enter image description here

解决这个问题的另一种方法是从#34; IIS Express&#34;切换启动器。到&#34; Web&#34;

答案 6 :(得分:3)

在Visual Studio中:

在学习本教程时,我收到了类似的错误。

首先,我收到错误:“尝试确定dotnet.exe的进程ID时出错...”我采取了以下步骤。

  1. 我在没有调试CTRL + F5的情况下启动了我的应用程序。
  2. 然后我看到了一个接受localhost自签名证书的选项。
  3. 我按照提示操作,然后我可以使用在项目调试设置中启用SSL后复制的AppUrl访问我的应用程序。
  4. 在尝试解决该错误的一些事情时,我也遇到了这个错误。 “尝试确定托管应用程序的DNX进程的进程ID时发生错误”

    这是由于另一个应用程序实例正在运行造成的。

    我希望这个答案有助于某人。

答案 7 :(得分:2)

假设您正在运行启用了SSL的IIS Express,具体取决于您的安装,您必须将您的IIS Express开发证书(发布到“localhost”/发布者“localhost”)放入[本地计算机\个人\证书]或[本地计算机\受信任的根证书\证书]。其中一个应该工作。 (使用Windows 10 + VS2015)。 HTH

答案 8 :(得分:2)

在我的情况下,在asp net core 1.1,.net framework 4.5.2项目中,错误没有引用dnx,因为那不再是。相反,它引用了项目名称exe。另一个版本的错误简称无法连接到iis express。

问题在于引入了一个规范主机名重写规则,它试图强制所有连接都有一个以www开头的主机名。例如将gty.org重定向到www.gty.org以符合我们的ssl证书。这在生产中很好但你不能强迫https://localhost:44347/以www开头,并希望iis express能够处理它。

<rule name="CanonicalHostNameAddwww" enabled="true" stopProcessing="true">
      <match url="(.*)" ignoreCase="true" />
      <conditions logicalGrouping="MatchAll">        
        <add input="{HTTP_HOST}" negate="true" pattern="^www\." />
      </conditions>
      <action type="Redirect" url="http://www.{HTTP_HOST}{HTTP_URL}"  appendQueryString="false" redirectType="Permanent" />
</rule>

解决方案是在visual studio中运行时添加注释规则或添加条件:

<add input="{HTTP_HOST}" negate="true" pattern="^localhost" />

答案 9 :(得分:1)

当我切换设置并禁用&#34; 启用匿名身份验证&#34;时,我遇到了这个问题。在项目中&gt;属性&gt;调试。 确保已启用。 关闭并重新启动项目,然后再试一次。 希望这会有所帮助。

答案 10 :(得分:1)

我使用RC1和EF First Code Approach。开始调查的好主意是使用选项运行项目:&#34;启动项目而不进行重新调整&#34; (按Ctrl + F5)。然后我为我得到了更有意义的错误:&#34;配置部分&#39; entityFramework&#39;无法阅读,因为它缺少一个部分声明。&#34;由于web.config文件,它对我不起作用。

答案 11 :(得分:1)

  1. 更新dnvm
  2. 将global.json sdk版本更改为dnvm的默认
  3. 无需触摸project.json或project.lock.json

答案 12 :(得分:1)

检查web.config文件是否存在无效条目。例如,拥有&#34; entityFramework&#34;那里的标签给我带来了这个问题。

答案 13 :(得分:0)

从beta7升级时 - &gt; beta8我有这个问题,Ben M和Domysee提供的建议对我有用。但是,我的一位同事在运行仅针对dnxcore50的项目时仍遇到问题。如果您确定已运行以下命令:

dnvm install 1.0.0-beta8 -r coreclr
dnvm install 1.0.0-beta8 -r coreclr -arch x86

特别是第二个命令将它固定在他的机器上。您还可以仔细检查此文件夹中是否有dnx.exe

%userprofile%\.dnx\runtimes\dnx-coreclr-win-x86.1.0.0-beta8\bin

答案 14 :(得分:0)

有很多事情可能导致此错误。以下是一些对我有用的内容:

  1. 只需删除web.config文件夹中的wwwroot即可。它将在编译时正确重新创建。
  2. 如果您尝试使用SSL并在IIS Express中,将SSL Cert移至Trusted Root Certification Authorities文件夹则无效。在您尝试运行的项目的Debug的{​​{1}}标签中。尝试取消选中Properties复选框,然后再次单击以启用它并获取其他端口。你可能不得不这样做几次。

答案 15 :(得分:0)

我刚刚发现另外一个导致此问题的问题!

项目根目录中的

web.config有一些狡猾的IIS URL重写规则来强制执行HTTPS。删除这些规则解决了这个问题。

答案 16 :(得分:0)

另一种可能的解决方案
对于使用SSL设置的任何人,我发现只需将launchSettings.json文件中的SSL端口更改为另一个附近的端口即可解决问题。

仅供参考,我在使用原始端口的机器上找不到任何内容,也没有使用端口使用错误。

答案 17 :(得分:-1)

对我来说,问题是通过关闭Visual Studio,删除

来解决的
WebApplication.csproj.user

再次启动Visual Studio。