Ничто из вышеперечисленного не помогло мне.
Url.IsLocalUrl работает совсем по-другому, и я считаю его немного бесполезным:
Например, следующие URL-адреса считаются локальными:
/Views/Default/Index.html
~/Index.html
Следующие URL не являются локальными:
../Index.html
http://www.contoso.com/
http://localhost/Index.html
HttpContext.Connection.IsLocal
не существует в .Net Core 2.2
Сравнение ControllerContext.HttpContext.Connection.RemoteIpAddress
и ControllerContext.HttpContext.Connection.LocalIpAddress
также не работает в мой тест, потому что я получаю ":: 1" для удаленного IP и "127.0.0.1" для локального IP.
Наконец, я использовал этот кусок:
IPAddress addr = System.Net.IPAddress.Parse( HttpContext.Connection.RemoteIpAddress.ToString() );
if (System.Net.IPAddress.IsLoopback(addr) )
{
//do something
}
Я бы посоветовал взглянуть на исходный код Smultron . У него очень приятная подсветка синтаксиса. Он использует подкласс NSTextView для выполнения большей части тяжелой работы. Код использует диспетчер компоновки для добавления атрибутов к тексту и использует некоторые другие хитрые приемы, чтобы выделить только необходимую часть документа.