我安装了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" />
我的云项目也设置为启动项目。
答案 0 :(得分:9)
当我上周从Visual Studio运行它进行调试时,它运行了 模拟器,使用127.0.0.1:80的绑定将其附加到IIS 一切都很好。
我不相信您曾经在与IIS的127.0.0.1:80绑定上调试了Azure Emulator部署的项目。您调试的内容可能只是Web应用程序项目,而不是Azure已部署的项目。让我解释一下原因:
Windows Azure模拟器使用内部模拟的Load Balancer(LB)。 这个模拟的LB绑定到127.0.0.1端口80(如果端口80已经是 它使用端口81)
Windows Azure Tools正在动态创建虚拟IP地址 对于您拥有的每个webrole实例。这些动态IP地址 是127.255.0.X,其中X是实例的逻辑编号(0, 1,2等...)。
Windows Azure工具通过绑定在本地IIS中创建网站 127.255.0.X和端口82
对于您定义的每个实例重复步骤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创作。