3

我知道这可能是一件非常愚蠢的事情,但我已经在谷歌上搜索了 2 个小时来解决这个问题。

我有一个新的测试 Azure 应用程序,我想在 Visual Studio 中进行调试。如果我将启动项目设置为 Web 角色 (MVC) 项目,我可以在 VS 中设置断点,但它没有在模拟器中运行,因此我的所有 Azure 调用都失败了。

如果我将启动项目设置为 Cloud 项目,则模拟器启动,然后 Visual Studio 结束调试并且我的 Web 角色永远不会启动。

我在这里想念什么?如何启动我的网页并仍然可以访问模拟器?

(旁注..为什么没有 Visual Studio 2012 标签??)

4

3 回答 3

2

我刚刚创建了一个带有 MVC Web 角色的 Azure 项目,并且能够在控制器操作中命中断点而没有任何问题。需要检查的一些事项:

  1. 您的 MVC 项目中是否有一个 WebRole.cs 文件,其中包含从 RoleEntryPoint 派生的类?
  2. Azure 项目的 Roles 文件夹中是否有代表 MVC 项目的节点?
  3. 当您运行 Azure 项目时,计算和存储模拟器图标是否会显示在任务栏的通知区域中?
  4. Azure 项目中的 ServiceDefinition.csdef 文件是否包含具有与 MVC 项目名称匹配的属性的 Web 角色节点?

WebRole 名称="MvcWebRole1" vmsize="Small"

作为一个快速测试,尝试使用 MVC Web 角色创建一个新的 Azure 项目,添加一个带有单个操作的控制器,该操作返回一个视图并在其中放置一个断点。然后将您的 Azure 项目设置为“启动项目”。如果一切正常,您应该在调试 Azure 项目时点击断点。

于 2013-06-13T04:54:43.173 回答
2

尽管这不能直接回答您的问题,但我始终确保我的项目在模拟器之外运行。如果不出意外,这只会大大提高您的开发效率。

为避免 Azure 调用失败的问题,您可以使用的一种非常基本的做法是使用依赖注入框架(例如 Unity 或其他)并创建一个LocalConfigurationManager和用于实例编号或配置设置等的 Azure可以只返回一个硬编码的数字/设置,而真正的将实际调用 Azure。AzureConfigurationManagerIConfigurationManagerLocalConfigurationManagerAzureConfigurationManager

诀窍是使用 Web.Debug.Config 和 Web.Prod.Config 文件(或者可能只是使用#IF DEBUGC# 预编译器语句)根据构建配置更改实现。

于 2013-06-13T03:50:30.917 回答
1

我卸载并重新安装了所有 Azure SDK,但无济于事。

这个链接

调试 Azure:将调试器附加到 IIS 工作进程时出错

告诉我在哪里查找导致它失败的错误,这导致我访问此链接:

http://social.msdn.microsoft.com/Forums/en-US/windowsazuredevelopment/thread/07fe087e-4ac3-4c4f-bd62-4fccff4afd45

The ACL on the Windows Azure registry entries were not in "canonical order".  
All you have to do is fix that and this error goes away.  
These are the steps I took:

1.)  regedit, navigate to HKLM\Software\Microsoft\Windows\Windows Azure

2.)  Right-click, choose "Permissions".  You will get a warning that the 
     security information is incorrect and you get a button labelled "Re-Order". 
     Click this and the security information then shows up as normal.

3.) Follow the same steps for the Windows Azure AppFabric and Windows Azure Emulator 
    registry entries in the list after the Windows Azure entry.

Problem Solved!

请注意,我在 HKLM\Software\Microsoft\Windows Azure 下找到了密钥,而不是在 Windows\Windows Azure 下。

于 2013-06-13T15:52:20.143 回答