Azure云服务:“不允许请求的注册表访问”。 VS2015

时间:2015-08-12 09:39:24

标签: c# azure visual-studio-2015 azure-cloud-services mscorlib

我已经尝试了几天将在Azure 2.6和Azure云服务上运行的后端解决方案迁移到Windows 10工作站上的VS2015中的Azure 2.7,但没有任何运气。

我在使用Visual Studio 2015 Enterprise全新安装Windows 10 Pro x64(已安装所有功能)的情况下尝试过多台计算机。 已安装Windows Update和Vs2015中提供的所有更新。 我创建了一个新的云服务解决方案,其中包含一个空Web角色。 我已经设置了VS2015以打破“公共语言运行时异常”(调试 - > Windows - >异常设置)。 我在运行Win 8.1,VS2015,Azure 2.7的单独机器上遇到了相同的错误。

解决方案编译正常,但是当我尝试运行/调试Cloud Service项目时,它会抛出以下错误:

  

抛出异常:mscorlib.dll中的'System.Security.SecurityException'

     

其他信息:不允许请求的注册表访问。

在不使用CloudService的情况下仅启动WebRole。

当我尝试使用管理员权限通过VS2015运行CloudService时,会抛出以下异常:

  

mscorlib.dll中的'System.Threading.WaitHandleCannotBeOpenedException'

     

附加信息:不存在给定名称的句柄。

在检查intellisense日志时(“不允许请求的注册表访问”),将已编译的解决方案发布到Azure会产生相同的异常。

我尝试在此博客文章中添加install.cmd脚本,以便在部署时在Azure Cloud Service上安装4.5.2或4.6但结果没有任何更改:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-install-dotnet/

  • 云服务是否与Azure 2.7兼容? - 更新:是的。确保使用.Net framework v4.5.1

  • 在本地调试模式下运行时是否真的需要install.cmd脚本?应该已经安装了4.5.2和4.6,对吗?

  • 其他人遇到此问题?

有关如何让云服务与Windows10,Vs2015和Azure 2.7一起使用的任何帮助或提示都非常受欢迎!

这是一个包含示例项目的回购:https://www.dropbox.com/s/ie7jcn932nsddio/CloudServiceRepo.zip?dl=0

1 个答案:

答案 0 :(得分:0)

如果您的根本原因与我的相同,我有一个解决方法(如果不是实际原因和解决方案)

在运行时添加此功能 - >您的辅助角色的app.config的assemblyBinding部分:

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.7.0.0" newVersion="2.7.0.0" />
  </dependentAssembly>

这是我如何到达这里的。在带有SDK 2.7的VS2015中,我创建了一个全新的空云服务。我引入了现有的工作角色,该角色是使用SDK 2.6创建的,并升级到2.7。这一次,我收到一个新错误,抱怨它无法找到Microsoft.WindowsAzure.Diagnostics版本2.6。在我的worker角色中,我的程序集引用是针对2.7版而不是2.6版。因此,工作者角色(我无法找到或理解)仍然需要此程序集的2.6版本。 SDK升级不好?不知道。无论如何,通过在app.config中添加此条目,我强制它使用版本2.7。

我不知道为什么在创建新的云服务时,与使用旧的云服务相比,我会收到不同的(更准确的)错误消息。我也不知道这与原版&#34; WaitHandle&#34;有什么关系?错误,但也许这是一个红鲱鱼,原来的问题一直是版本不匹配?我想知道导致这个问题的原因以及适当的长期解决方案是什么,但我现在已经解决了这个问题。

祝你好运,我希望这对你有用,就像对我一样。