ASP的Request.IsLocal在Azure中始终为true

时间:2019-05-02 14:34:37

标签: c# asp.net azure

我正在尝试检测网站是否正在本地运行以显示堆栈跟踪,而不是显示漂亮的服务器错误页面。我一直很高兴在本地和内部环境的Request.IsLocal文件中使用Global.asax.cs,但是当将它部署到Azure应用程序时,其行为就像请求确实在本地一样。

根据文档,这实际上检查了原始IP是否为127.0.0.1,但我不知道怎么回事。这只是一些奇怪的Azure潜在问题吗?

1 个答案:

答案 0 :(得分:0)

我没有看到相同的问题。但是,我认为,您可以尝试使用以下代码进行IsLocal。

public static class HttpRequestExtensions
{
    public static bool IsLocal(this HttpRequest req)
    {
        var connection = req.HttpContext.Connection;
        if (connection.RemoteIpAddress != null)
        {
            if (connection.LocalIpAddress != null)
            {
                return connection.RemoteIpAddress.Equals(connection.LocalIpAddress);
            } 

            return IPAddress.IsLoopback(connection.RemoteIpAddress);
        }

        if (connection.RemoteIpAddress == null && connection.LocalIpAddress == null)
        {
            return true;
        }

        return false;
    }
}