当我尝试从部署 Azure Web 角色的计算机打开站点时出现 404
在 RoleEntryPoint.OnStart()
结束时,我想打开 Web 角色站点以确保它不会因某些愚蠢的错误而中断。所以我执行以下操作:
WebRequest request = WebRequest.Create( "http://127.0.0.1" );
using( WebResponse response = request.GetResponse() ) {
}
失败并显示 WebException
和 (404) Not Found
文本。该角色在端口 80 上有一个开放的 HTTP 端点,因此这应该不是问题。但是,如果我省略该代码并且角色启动,我可以毫无问题地打开 http://mysubdomain.cloudpapp.net
。
这是怎么回事?如何从 Web 角色中打开 Web 角色站点的网页?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您不应使用 127.0.0.1,而应使用为 WebRole 指定的 InputEndpoint。
您可以使用如下方式从中获取 IPEndpoint 实例:
然后获取 IPEndpoint 的 ">IP 地址实例。
编辑
只需仔细检查以确认原因:
其原因是 IIS 中网站的站点绑定不是 *:80 (就像本地 IIS 中的某些通常所做的那样),而是仅针对特定的 DIP实例的(直接(内部)IP 地址)。
You shall not use 127.0.0.1, but instead the InputEndpoint specified for the WebRole.
You can get the IPEndpoint instance from it with sode like:
Then get the IP Address from the IPEndpoint instace.
EDIT
Just double checked to confirm the reason:
The reason for that is that the Site Bindings for the WebSite in IIS are not *:80 (like some nomrally do in local IIS) but just to the specific DIP (Direct (internal) IP Address) of the Instance.