【发布时间】:2016-01-14 23:11:03
【问题描述】:
我在尝试启动应用程序时收到此错误消息。
尝试确定 DNX 的进程 ID 时发生错误 托管您的应用程序的进程
有没有办法解决这个问题?
【问题讨论】:
标签: c# asp.net-core
我在尝试启动应用程序时收到此错误消息。
尝试确定 DNX 的进程 ID 时发生错误 托管您的应用程序的进程
有没有办法解决这个问题?
【问题讨论】:
标签: c# asp.net-core
对我来说,问题是通过关闭 Visual Studio 来解决的,删除
project.lock.json
并再次启动 Visual Studio。
编辑:我使用的是 RC1。
【讨论】:
project.lock.json在哪里?
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 时,我在移动解决方案文件夹后出现错误。删除 bin 和 obj 文件夹后,一切正常。
正如 user764754 所说,只需重新启动 Visual Studio 也会有所帮助。
【讨论】:
对于遇到此问题的其他人,如果其他解决方案不起作用 - 我在此线程中找到了答案: Forcing to use SSL: An error ocurred attempting to determine the process id of the DNX process hosting your application
如果您的项目使用或强制 SSL 运行它而不首先调试 (CTRL+F5),它会要求您生成本地 SSL 证书,然后调试将起作用并且错误将消失。
【讨论】:
对于它的价值,这是一个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 上提供以下两个端点。
如果您在 applicationUrl 和 sslPort 设置中使用相同的端口,您将收到与此线程相关的错误。
在 RC1
上这对我来说是正确的【讨论】:
可以升级,我发现我必须浏览新的更新模板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();
添加这些引用应该允许您运行项目。
【讨论】:
由于项目配置尝试启动 https://localhost 而不是 http,我遇到了这个问题。右键单击 web 项目,在“Debug”下,将“App URL”调整为 http 而不是 https。
解决此问题的另一种方法是将启动器从“IIS Express”切换到“Web”
【讨论】:
在学习本教程时,我收到了类似的错误。
首先,我收到错误消息:“尝试确定 dotnet.exe 的进程 ID 时发生错误...”我采取了以下步骤。
在尝试一些方法来解决该错误时,我也遇到了这个错误。 “尝试确定托管您的应用程序的 DNX 进程的进程 ID 时发生错误”
这是由于应用程序的另一个实例正在运行而引起的。
我希望这个答案对某人有所帮助。
【讨论】:
在我的 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" />
【讨论】:
假设您正在运行启用 SSL 的 IIS Express,具体取决于您的安装,您必须将 IIS Express 开发证书(颁发给“localhost”/由“localhost”颁发)放入 [Local Computer\Personal\Certificates] 或[本地计算机\受信任的根证书\证书]。其中之一应该工作。 (使用 Windows 10 + VS2015)。高温
【讨论】:
检查 web.config 文件中的无效条目。例如,那里有“entityFramework”标签会给我带来这个问题。
【讨论】:
我在切换设置并在“项目”>“属性”>“调试”中禁用了“启用匿名身份验证”时遇到了这个问题。 确保它已启用。 关闭并重新启动项目,然后重试。 希望这会有所帮助。
【讨论】:
我使用了 RC1 和 EF First Code Approach。开始调查的好主意是使用以下选项运行项目:“启动项目而不进行调试”(Ctrl+F5)。然后我得到更有意义的错误:“无法读取配置部分'entityFramework',因为它缺少部分声明。”由于 web.config 文件,它对我不起作用。
【讨论】:
【讨论】:
从 beta7 -> 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
【讨论】:
我刚刚发现了另一个导致此问题的问题!
项目根目录中的web.config 有一些狡猾的 IIS URL 重写规则来强制执行 HTTPS。删除这些规则解决了问题。
【讨论】:
有太多的事情可能导致这个错误。以下是一些对我有用的:
wwwroot 文件夹中的web.config。它将在编译时正确重新创建。SSL 和IIS Express 并将SSL Cert 移动到Trusted Root Certification Authorities 文件夹不起作用。在您尝试运行的项目的Properties 的Debug 选项卡中。尝试取消单击Enable SSL 复选框,然后再次单击以启用它并获取不同的端口。您可能需要多次执行此操作。【讨论】:
另一种可能的解决方案
对于任何使用 SSL 设置的人,我发现只需将 launchSettings.json 文件中的 SSL 端口更改为附近的另一个端口即可解决问题。
仅供参考,我在使用原始端口的机器上找不到任何东西,也没有收到端口正在使用错误。
【讨论】: