VS2015中的Azure调试环境在启动时崩溃

时间:2015-10-06 09:23:02

标签: azure visual-studio-2015 azure-sdk-.net azure-debugger

这最近刚刚开始发生。我尝试了可以​​在Stack和其他论坛上找到的所有解决方案,但到目前为止还没有任何工作。

当我尝试在Azure辅助角色上开始调试时,这就是我得到的:

enter image description here

“调试”窗口显示为: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...).

1 个答案:

答案 0 :(得分:13)

重新安装Visual Studio,Azure SDK,IIS并通过日志文件后,我终于找到了问题:Web项目中与我的worker角色关联的node_modules文件夹。

我删除文件夹后立即开始调试;即使它不是Visual Studios解决方案的一部分。

我已经在Stack上搜索了这个特定的问题并发现了这篇文章: https://stackoverflow.com/a/28188299/654708

rmdir /s /q "$(ProjectDir)node_modules\"添加到与worker角色关联的项目属性内的构建后事件中,将在Azure调试器启动之前删除node_modules文件夹。这不是一个完美的解决方案,但它会一直存在,直到Windows无法处理长文件名这个荒谬的问题得到解决。

enter image description here

<强>更新

刚刚找到了更好的解决方案。使用Microsoft开发团队的npm模块将npm-windows-upgrade更新为&gt; = 3.x:

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

npm 3.x中,node_modules文件夹中的模块存储在平面结构中。这应该有助于避免导致Azure调试器崩溃的路径上的256个字符限制(前提是解决方案根目录的路径不是太长)。

默认情况下,在Windows上安装节点时,npm版本2预先捆绑(截至2015年9月8日)。使用常规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
  4. enter image description here

    补充阅读:

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