Среда отладки Azure в VS2015 аварийно завершает работу при запуске

Это только недавно начало происходить ни с того ни с сего. Я перепробовал все решения, которые смог найти на Stack и других форумах, но пока ничего не помогло.

Когда я пытаюсь начать отладку рабочей роли Azure, я получаю следующее:

введите описание изображения  здесь

Окно отладки гласит: The program '[2208] WaIISHost.exe' has exited with code 0 (0x0).

Я запускаю Visual Studios в административном режиме с правильным проектом, установленным в качестве запуска, и использую IIS Express в качестве сервера разработки.

Я попытался создать новую рабочую роль Azure с тем же базовым проектом, но это не сработало. Журналы системных событий не содержат никакой информации. Я пробовал переустанавливать VS2015 и отдельно Azure SDK (v.2.7.1), без изменений. Когда я просматриваю эмулятор вычислений, прежде чем он исчезнет, ​​он говорит:

[fabric] Role Instance: deployment27(250).Web.0
[fabric] Role state Unhealthy
[fabric] Role state Stopped

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

ОБНОВЛЕНИЕ

Глядя на файл WallSHost.log внутри C:\Users\<UserAccount>\AppData\Local\dftmp\Resources\<GUID>\directory\DiagnosticStore, я получаю ошибку Invalid name:

WaIISHost Information: 0 : [00003568:00000001, 2015-10-06 20:02:05.472, INFO ] Attempt Deploy with RoleInstanceId=deployment27(252).Web_IN_0 RoleRoot=C:\Web\csx\Debug\roles\Web\ optional SitesDestination=
WaIISHost Information: 0 : [00003568:00000001, 2015-10-06 20:02:08.153, ERROR] Exception:System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Invalid name.
Parameter name: name (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.ArgumentException: Invalid name.
Parameter name: name
   at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext)
   at System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory)
   at System.Security.AccessControl.DirectorySecurity..ctor(String name, AccessControlSections includeSections)
   at System.IO.DirectoryInfo.GetAccessControl(AccessControlSections includeSections)
   at Microsoft.WindowsAzure.ServiceRuntime.IISConfigurator.FileManager.AddAllowAceIterative(DirectoryInfo dir, FileSystemRights rights, IdentityReference[] accounts)
   at Microsoft.WindowsAzure.ServiceRuntime.IISConfigurato...).


WaIISHost Information: 0 : [00003568:00000001, 2015-10-06 20:02:08.157, ERROR] Exception:System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Invalid name.
Parameter name: name (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.ArgumentException: Invalid name.
Parameter name: name
   at System.Security.AccessControl.NativeObjectSecurity.CreateInternal(ResourceType resourceType, Boolean isContainer, String name, SafeHandle handle, AccessControlSections includeSections, Boolean createByName, ExceptionFromErrorCode exceptionFromErrorCode, Object exceptionContext)
   at System.Security.AccessControl.FileSystemSecurity..ctor(Boolean isContainer, String name, AccessControlSections includeSections, Boolean isDirectory)
   at System.Security.AccessControl.DirectorySecurity..ctor(String name, AccessControlSections includeSections)
   at System.IO.DirectoryInfo.GetAccessControl(AccessControlSections includeSections)
   at Microsoft.WindowsAzure.ServiceRuntime.IISConfigurator.FileManager.AddAllowAceIterative(DirectoryInfo dir, FileSystemRights rights, IdentityReference[] accounts)
   at Microsoft.WindowsAzure.ServiceRuntime.IISConfigurato...).

person GFoley83    schedule 06.10.2015    source источник
comment
Пожалуйста, проверьте журналы событий. Вы можете найти некоторую информацию о сбое роли там. ХТН.   -  person Gaurav Mantri    schedule 06.10.2015
comment
Журналы событий @GauravMantri мало что говорят. См. выше информацию об ошибке в файле WallSHost.log. Спасибо.   -  person GFoley83    schedule 07.10.2015


Ответы (1)


После переустановки Visual Studios, Azure SDK, IIS и изучения файлов журналов я наконец нашел проблему: папку node_modules в веб-проекте, связанную с моей рабочей ролью.

Как только я удалил папку, сразу началась отладка; даже если он не является частью решения Visual Studios.

С тех пор я искал эту конкретную проблему в стеке и нашел этот пост: https://stackoverflow.com/a/28188299/654708< /а>

Добавление rmdir /s /q "$(ProjectDir)node_modules\" к событиям после сборки в свойствах проекта, связанного с рабочей ролью, приведет к удалению папки node_modules до запуска отладчика Azure. Не идеальное решение, но оно будет работать до тех пор, пока не будет устранена эта нелепая проблема, связанная с тем, что Windows не может обрабатывать длинные имена файлов.

введите здесь описание изображения

ОБНОВЛЕНИЕ

Просто нашел лучшее решение. Обновите npm до >= 3.x, используя модуль npm-windows-upgrade от команды разработчиков Microsoft здесь:

https://www.npmjs.com/package/npm-windows-upgrade

В npm 3.x модули в папке node_modules хранятся в плоской структуре. Это должно помочь избежать ограничения в 256 символов на пути, которое приводит к сбою отладчика Azure (при условии, что путь к корневому каталогу вашего решения уже не слишком длинный).

По умолчанию при установке Node в Windows npm версии 2 поставляется в комплекте (по состоянию на 8 сентября 2015 г.). Использование обычной команды обновления npm npm -g install npm@<version> не сработает, так как Node всегда будет использовать версию npm, поставляемую вместе с установкой; вот тут-то и появляется npm-windows-upgrade.

Откройте Windows PowerShell с правами администратора и выполните следующие задачи, чтобы выбрать версию npm, которую вы хотите установить.

  1. Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force
  2. npm install -g npm-windows-upgrade
  3. npm-windows-upgrade

введите здесь описание изображения

Дополнительное чтение:

https://github.com/npm/npm/wiki/Troubleshooting#upgrading-on-windows https://github.com/npm/npm/issues/3697#issuecomment-114665926

person GFoley83    schedule 06.10.2015
comment
Ты спас меня от ограничения количества символов, чувак. -- Я бы хотел, чтобы Microsoft просто исправила эту проблему с 260-символьным путем. Это безумие. - person BrainSlugs83; 09.12.2015
comment
Спасибо. Не знаю, как ты это понял, но теперь моя голова чувствует себя лучше, потому что я перестала биться ею о стену. - person Ryan; 14.10.2016