Visual Studio将我的Azure Web角色设置为127.255.0.0:82而不是127.0.0.1:80

时间:2011-12-16 20:46:01

标签: visual-studio-2010 debugging azure

我安装了Windows Azure SDK 1.6以及Azure工具。我有一个Web角色(有两个端点,http为80端口,https为端口443),只有一个Web角色实例正在运行(用于测试目的)。

当我上周从Visual Studio运行它进行调试时,它运行了模拟器,将其附加到IIS,绑定为127.0.0.1:80,一切都很好。

但截至昨天,我一开始尝试将其绑定到127.255.0.1:82并且它停止使用此错误(来自Visual Studio):

  

将调试器附加到iis工作进程时出错   对于网址“http://127.255.0.0:82

现在,如果我手动转到IIS并更改绑定,我可以通过浏览器访问该站点,但显然我无法通过VS调试它。

为什么Visual Studio会这样做?是什么让它从上周开始发生了变化(我只修改了代码而我已经对它们进行了评论)?

编辑:我知道这个blog,但我的问题似乎有所不同,因为一个原因我在事件日志中没有错误。就像我在IIS中手动更改绑定时提到的那样,我可以正确访问该站点,以便正确配置应用程序池。

Edit2:我有以下设置:

<compilation debug="true" targetFramework="4.0" />

我的云项目也设置为启动项目。

1 个答案:

答案 0 :(得分:9)

  

当我上周从Visual Studio运行它进行调试时,它运行了   模拟器,使用127.0.0.1:80的绑定将其附加到IIS   一切都很好。

我不相信您曾经在与IIS的127.0.0.1:80绑定上调试了Azure Emulator部署的项目。您调试的内容可能只是Web应用程序项目,而不是Azure已部署的项目。让我解释一下原因:

  1. Windows Azure模拟器使用内部模拟的Load Balancer(LB)。 这个模拟的LB绑定到127.0.0.1端口80(如果端口80已经是 它使用端口81)

  2. Windows Azure Tools正在动态创建虚拟IP地址 对于您拥有的每个webrole实例。这些动态IP地址 是127.255.0.X,其中X是实例的逻辑编号(0, 1,2等...)。

  3. Windows Azure工具通过绑定在本地IIS中创建网站 127.255.0.X和端口82

  4. enter image description here

    对于您定义的每个实例重复步骤3.

    开始调试时,浏览器通常会打开http://127.0.0.1:81/,这是LB的地址。但是来自此地址的请求将转发到IIS及其绑定到127.255.0.X:82。您无法通过手动将调试器附加到127.0.0.1:80来调试Windows Azure仿真器部署的项目,因为如果一切正常,则没有w3wp进程侦听该地址:端口,但Azure模拟LB.

    当您只拥有WebRole(未定义其他站点)时,Windows Azure Tools确实知道它应将调试器附加到127.255.0.X:82,其中w3wp进程正在侦听。

    这是Azure模拟器的简洁工作配置。 SDK&amp;工具v.1.6(我认为也是1.5甚至回到1.3,首次引入了完整的IIS模式)

      

    现在,如果我手动转到IIS并更改绑定,我可以访问   该网站通过浏览器,但显然我无法通过VS进行调试。

    是的,您将能够访问该站点,但这样您就可以跳过模拟的LB,这不是开发Windows Azure应用程序时的重点。

    如果您正在解决此类问题,我建议您清理解决方案,重新启动计算机,如果问题仍然存在,请卸载SDK&amp;工具和执行干净的SDK全面安装&amp;使用Web平台安装程序为Windows Azure v.1.6创作。