我正在尝试将现有的MVC 3网站迁移到Azure Web角色。我的开发环境使用主机头:
lcladmin.mysite.com
主机标头在我的hosts文件中设置为指向127.0.0.1。如果我使用ServiceConfiguration.csdef中的默认设置,则站点可以正常加载为127.0.0.1,但依赖于使用主机头的功能不起作用。所以我尝试在SericeConfiguration.csdef中的Binding上设置hostHeader属性,现在我在Visual Studio 2010中得到了这个错误对话框:
*对于角色实例“部署(17).Azure.Admin_IN_0”,将deubgger附加到URL“http://lcladmin.mysite.com:81/”的IIS工作进程时出错。无法在Web服务器上启动调试。由于语法无效,服务器无法处理调试请求。*
此时我可以在我的网络浏览器中浏览网站,所有内容似乎都应该正常工作,任何现有的断点都会在VS中受到影响。但是,由于上述消息的模态错误对话框,VS无法使用。
这是我的ServiceConfiguration.csdef的内容:
<ServiceDefinition name="Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="Admin" vmsize="Small">
<Sites>
<Site name="Web">
<Bindings>
<Binding name="Endpoint1" endpointName="Admin" hostHeader="lcladmin.mysite.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Admin" protocol="http" port="81" />
</Endpoints>
<Imports>
<Import moduleName="Diagnostics" />
</Imports>
我认为这不是我正在迁移的网站特有的问题。如果我向我的解决方案添加一个新的Azure项目,并且新的MVC 3 Web角色,我做的唯一更改是添加hostHeader属性,它也会做同样的事情。
答案 0 :(得分:4)
Michael Neel的博客文章为我解决了同样的问题:Debugging Azure WebRoles with Multiple Sites
在阅读Michael的条目后,我的关键是在主机文件中获取正确的IP地址 - 就像在他的条目的一条评论中提到的那样 - 我的ip必须是127.255.0.0(你可以查看在部署发生在azure仿真器之后,您的系统在IIS中,查看站点的绑定)