Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
ASP0028. Рассмотрите возможность использования
| Значение | |
|---|---|
| Идентификатор правила | ASP0028 |
| Категория | Использование |
| Исправление является нарушающим или не нарушающим | Безразрывный |
Причина
На серверном компьютере, поддерживающем IPv6, IPv6Any предпочтительнее Any, так как Any может работать медленнее, чем IPv6Any. В некоторых случаях Any может не работать вообще.
Anyможет быть медленнее из-за реализации базовых системных типов.
127.0.0.1 — это адрес обратного цикла IPv4.
::1 — это адрес обратного цикла IPv6.
Any — это подстановочный адрес для IPv4.
IPv6Any — это подстановочный адрес для IPv6.
Текущее поведение с IPv6 при использовании HTTP/1.x или HTTP/2.0:
-
localhostразрешается как[::1]. -
[::1]не принимается сервером, который вынуждает повторить попытку с помощью127.0.0.1, создавая замкнутый цикл.
Использование Any с предыдущими условиями приводит к возникновению диагностического ASP0028 сообщения. Ниже приведен пример кода, который может привести к следующим условиям:
.UseKestrel().ConfigureKestrel(options =>
{
options.Listen(IPAddress.Any, ...);
})
Описание правила
Рекомендуемый способ настроить Kestrel прослушивание входящих подключений во всех доступных IPv6 сетевых интерфейсах IPv6Any.
Устранение нарушений
Для проблемного кода замените AnyIPv6Anyна .
ListenAnyIP(Int32) Используйте метод без указания аргументов:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.ListenAnyIP(...);
})
Или используйте IPv6Any поле:
.UseKestrel().ConfigureKestrel(options =>
{
- options.Listen(IPAddress.Any, ...);
+ options.Listen(IPAddress.IPv6Any, ...);
})
Когда лучше отключить предупреждения
Диагностика ASP0028 имеет уровень серьезности сведений . Отключите это предупреждение, если вы намерены полностью отключить IPv6 использование на сервере, хотя это рискует проблемами производительности, упомянутыми в этой статье.
IPv6 может быть отключён как на уровне всей системы, так и только для .NET с помощью переключателя AppCtx или переменной среды.
ASP.NET Core