Azure VM IIS HTTP状态代码已更改

问题描述 投票:0回答:1

我在基本负载均衡器后面有几个Azure VM,带有用于后端池的HTTP URL运行状况探针。为了将服务器标记为关闭,该URL返回状态代码503(服务不可用),但是当我从这些VM调用该页面时,返回的状态代码为403。我想,将服务器标记为关闭具有预期的效果-但我不明白为什么我设置的代码已更改。

这是来自VM上的ASP.NET Web窗体应用程序。我查看浏览器中的开发人员工具,并从本地计算机或本地网络上的Dev服务器查看该页面,返回状态代码503,但从Azure中的VM调用该页面,状态代码为403。

这里是我在该页面中设置状态代码的地方:

Response.Clear()
Response.StatusCode = 503
Response.Flush()

[我想我应该提到的是我的本地计算机是Windows 10机器,服务器VM是Windows Server2016。两者都运行IIS10。应用程序使用.NET Framework 4.6编译。

这是来自我的本地主机的开发工具:dev tools from localhost

以下是来自天蓝色服务器的开发工具:dev tools from prod vm in azure

为什么要更改?我能做些什么来阻止这种行为?

asp.net azure virtual-machine http-status-codes iis-10
1个回答
0
投票

因此,今天我尝试启用失败的请求跟踪,但是未正确设置某些错误或正在其他地方处理该错误,并且未导致记录任何失败的请求。由于我没有记录任何失败的请求,因此打开了进程监视器,可以看到在调用“运行状况探测器”页面后立即调用了自定义HTTP错误页面。该页面一定是给403的东西(不知道为什么,因为该页面带有友好的错误消息并将错误记录到我的自定义错误跟踪解决方案中,所以该页面可以正确处理其他HTTP错误)。

我将更改状态码,以查看所设置的503是否存在某些与IIS不同的处理方式,但这让我开始思考如何设置状态码...在今天的研究中,我看到了此页面https://www.leansentry.com/HowTo/AspNet-Response-Flush-Poor-Performance,该页面提醒您不要使用Response.Flush()。我已经实现的代码在Page_PreRender方法中,因此实际上并不需要冲洗它。我删除了Response.Flush,当然,我的麻烦也消失了。

“运行状况探测器”页面不再从Azure VM触发错误,因此,我在客户端浏览器中获得的状态代码是我在代码中设置的503。

所以我想这个案子已经结案了。我将需要弄清楚为什么HTTP错误页面会抛出403而不是返回友好错误消息,但这应该很容易...

© www.soinside.com 2019 - 2024. All rights reserved.