Запрос ASP.IsLocal всегда выполняется в Azure - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь определить, работает ли веб-сайт локально, чтобы отобразить трассировку стека вместо красивой страницы с ошибкой сервера.Я с радостью использовал Request.IsLocal в файле Global.asax.cs локально и во внутренней среде, но когда он развертывается в приложении Azure, он ведет себя так, как если бы запрос действительно был локальным.

Согласно документацииэто фактически проверяет, был ли исходный IP 127.0.0.1, но я не понимаю, как это может быть.Это просто странная проблема Azure?

1 Ответ

0 голосов
/ 02 мая 2019

Я не видел ту же проблему. Но, я думаю, вы можете попробовать сделать 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...