Произошла ошибка при попытке определить идентификатор процесса DNX, на котором размещено ваше приложение.


101

Я получаю это сообщение об ошибке, когда пытаюсь запустить приложение.

Произошла ошибка при попытке определить идентификатор процесса DNX, на котором размещено ваше приложение.

Есть ли способ решить проблему?

Ответы:


151

Для меня проблема была решена закрытием Visual Studio, удалением

project.lock.json

и снова запустить Visual Studio.

Изменить : я использовал RC1.


2
Решил мою проблему в проекте RC1
Надав Хьюри

@NadavHury То же самое :)
ManyRootsofAllEvil 01

1
Я решил проблему с помощью примера приложения RC1, загруженного с PluralSight, очень признателен
tomRedox

5
это больше не работает. np microsoft. мы с этим разберемся. снова и снова и ... СНОВА

1
где это project.lock.json?
CodyBugstein

34

Microsoft изменила модель хостинга, как описано в примечаниях к выпуску .

В 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 также может помочь.


В новой модели хостинга вы вообще не используете web.config и можете полностью его удалить. HttpPlatformHandler и Startup.cs заменяют web.config, поскольку вы до некоторой степени обходите IIS.
cygnim

2
Я использую новейшие шаблоны сначала после установки 1.0.0-beta8, а затем создания нового проекта ASP.NET в VS 2015. Все записи верны, но я получаю ту же ошибку, что и Domysee. Не мог бы кто-нибудь объяснить, что означают "% DNX_PATH%" и "% DNX_ARGS%"?
okieh

1
Я должен уточнить, вам не нужен web.config в вашем проекте. Во время компиляции создается минимальный файл web.config, который в основном добавляет HttpPlatformHandler в конвейер и направляет трафик от IIS на сервер Kestrel. Итак, вы правы, есть файл web.config, но он не нужен в базе кода вашего проекта.
cygnim

3
Просто перезапуск VS сделал это для меня с RC-1, удаление не требуется.
user764754

2
У меня была такая же проблема с RC1, решение для меня заключалось в том, чтобы удалить web.config (в wwwroot)
rad

30

Для других людей, у которых есть эта проблема, в случаях, когда другие решения не работают - я нашел ответ в этой теме: Принуждение к использованию SSL: произошла ошибка при попытке определить идентификатор процесса DNX-процесса, на котором размещено ваше приложение.

Если ваш проект использует или применяет SSL, сначала запустите его без отладки (CTRL + F5), он попросит вас сгенерировать локальный сертификат SSL, и после этого отладка будет работать, и ошибка исчезнет.


Это исправило это для меня. Я перенес свой проект на новый компьютер, на котором не был установлен сертификат. Спасибо.
Pace

Хорошо, вот и все! Я собираюсь отметить это на странице «Включение аутентификации с помощью Facebook ...», поскольку их инструкции включают принудительное использование SSL.
N8allan

Я не мог заставить его работать, нажимая CTRL + F5. F5 работал после запуска, чтобы доверять моим экспресс-сертификатам iis. У меня не было предупреждений, но это исправило для меня.
Джош Клоуз

11

Как бы то ни было, это общее сообщение об ошибке, которое может служить отвлекающим маневром для любого количества проблем, когда httpPlatformHandler не может запустить данный исполняемый файл (в данном случае dnx).

В моем случае я получил эту ошибку как прямой результат неправильного понимания файла launchSettings.json. Я пытался включить конечную точку https для своего приложения и по ошибке продублировал sslport в моем applicationUrl. Насколько я понимаю, applicationUrl должен быть именем хоста / портом http приложения, и, заполнив sslPort, он просто настраивает среду IIS Express для прослушивания https на имени хоста, указанном в applicationUrl на порту, указанном в sslPort.

Например:

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

Предоставляет следующие две конечные точки на localhost.

  • HTTP через порт 44400
  • HTTPS через порт 44300

Если бы у вас был один и тот же порт в настройках applicationUrl и sslPort, вы бы получили ошибку, связанную с этим потоком.

Это актуально для меня на RC1


Почему sslPort должен отличаться от applicationUrl? Раньше у меня это работало до RTM ...
Борис Липшиц

У меня была ошибка: не удалось подключиться к веб-серверу IIS Express, и после удаления файла «\ .vs \ config \ applicationhost.config» я получил сообщение об ошибке «Произошла ошибка при попытке ...». В свойствах проекта> отладка я снял флажок SSL, запустил отладчик (работает), снова отметил SSL и скопировал URL-адрес в «URL-адрес приложения», отладка в режиме SSL снова работает. Ошибка появилась после обновления Windows, но не уверен, что это была причина. Мои настройки iisSettings теперь "iisExpress": {"applicationUrl": " localhost: 44369 ", "sslPort": 44369} .. он работает, если номера портов не совпадают
JimiSweden

6

Возможно обновление, я обнаружил, что мне нужно просмотреть новые обновленные шаблоны здесь .

Обновите свой web.config в wwwroot, включив в него:

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

Вам также нужно будет изменить способ отладки проекта с помощью 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

и добавив это в метод Configure в startup.cs

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

добавление этих ссылок должно позволить вам запустить проект.


5

Я столкнулся с этой проблемой из-за того, что конфигурация проекта пытается запустить https: // localhost вместо http. Щелкните правой кнопкой мыши веб-проект в разделе «Отладка» и настройте «URL-адрес приложения» на http вместо https. введите описание изображения здесь

Еще один способ обойти это - переключить программу запуска с «IIS Express» на «Web».


3

В Visual Studio:

Следуя этому руководству, я получил аналогичную ошибку.

Сначала я получил сообщение об ошибке: «Произошла ошибка при попытке определить идентификатор процесса dotnet.exe ...» Я предпринял следующие шаги.

  1. Я запустил свое приложение без отладки CTRL + F5.
  2. Затем мне была предоставлена ​​возможность принять самоподписанный сертификат для localhost.
  3. Я выполнил инструкции и смог посетить свое приложение, используя AppUrl, который я скопировал после включения SSL в настройках отладки проекта.

Пытаясь решить эту ошибку, я также столкнулся с этой ошибкой. "Произошла ошибка при попытке определить идентификатор процесса DNX-процесса, на котором размещено ваше приложение"

Это было вызвано запуском другого экземпляра приложения.

Надеюсь, этот ответ кому-то поможет.


Подождите, значит, ответ «вызван запуском другого экземпляра приложения»? Это сразу должно стать более очевидным.
Bloodied

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" />

2

Предполагая, что вы используете IIS Express с включенным SSL, в зависимости от вашей установки вам нужно будет поместить свой сертификат разработки IIS Express (выданный на «localhost» / выданный «localhost») либо в [Local Computer \ Personal \ Certificates], либо в [Local Computer \ Сертификация доверенного корня \ Сертификаты]. Один из них должен работать. (Используется Windows 10 + VS2015). HTH


Добавление сертификата разработки IIS Express в Local Computer \ Trusted Root Certification \ Certificates помогло мне. Спасибо! (Для кого-то еще, в моем случае у меня уже был сертификат в Local Computer \ Personal \ Certificates)
Дэвид Алеу

1

Проверьте файл web.config на наличие недопустимых записей. Например, наличие тега entityFramework вызывает у меня эту проблему.


1

У меня была эта проблема, когда я переключаю настройки и отключил « Включить анонимную аутентификацию » в Project> Properties> Debug. Убедитесь, что он включен. Закройте и перезапустите проект, затем повторите попытку. Надеюсь это поможет.


У меня была такая же проблема, но вместо того, чтобы включать только анонимность, мне пришлось включить либо анонимную проверку подлинности, либо проверку подлинности Windows. Если оба были ложными, я получил ошибку.
birken25 06

1

Я использовал подход первого кода RC1 и EF. Хорошая идея для начала исследования - запустить проект с опцией: «Начать проект без отладки» (Ctrl + F5). Тогда я получаю более значимую для меня ошибку: «Раздел конфигурации entityFramework не может быть прочитан, потому что в нем отсутствует объявление раздела». У меня не получилось из-за файла web.config.


1
  1. Обновить dnvm
  2. Измените версию global.json sdk как стандартную для dnvm
  3. Не нужно трогать project.json или project.lock.json

0

При обновлении с 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

0

Я только что обнаружил еще одну проблему, которая была причиной этого!

web.configв корне проекта были некоторые хитрые правила перезаписи URL-адресов IIS для обеспечения соблюдения HTTPS. Удаление этих правил решило проблему.


0

Есть очень много вещей, которые могут вызвать эту ошибку. Вот несколько из них:

  1. Просто удалите web.configв своей wwwrootпапке. Он будет правильно воссоздан при компиляции.
  2. Если вы пытаетесь использовать SSLи в своем, IIS Expressи перемещение SSL Certв Trusted Root Certification Authoritiesпапку не сработало. Во Debugвкладке Propertiesпроекта, который вы пытаетесь запустить. Попробуйте снять Enable SSLфлажок, а затем щелкните его еще раз, чтобы включить его и получить другой порт. Возможно, вам придется проделать это несколько раз.

0

Еще одно возможное решение.
Для тех, кто играет с настройками SSL, я обнаружил, что простое изменение SSL-порта в launchSettings.jsonфайле на другой ближайший порт решило проблему.

К вашему сведению, я не смог ничего найти на машине, использующей исходный порт, и не получил ошибку использования порта.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.