다음을 통해 공유


ASP0028: 대신 사용하는 IPAddress.IPv6Any 것이 좋습니다. IPAddress.Any

가치
규칙 ID ASP0028
범주 사용
수정이 문제를 일으키는지 또는 일으키지 않는지 여부 주요 변경 아님

원인

지원하는 서버 컴퓨터에서는 IPv6Any보다 느려질 수 있으므로 보다 IPv6Any를 사용하는 것이 좋습니다. 경우에 따라 Any 전혀 작동하지 않을 수 있습니다. Any기본 시스템 형식 구현으로 인해 속도가 느려질 수 있습니다.

127.0.0.1 는 IPv4 루프백 주소입니다. ::1 은 IPv6 루프백 주소입니다. Any 는 IPv4의 와일드카드 주소입니다. IPv6Any 는 IPv6의 와일드카드 주소입니다.

HTTP/1.x 또는 HTTP/2.0을 사용하는 경우 IPv6의 현재 동작:

  • localhost[::1]로 해석됩니다.
  • [::1] 는 서버에서 허용되지 않으므로 다시 시도 127.0.0.1하여 반복되는 주기를 만듭니다.

위의 조건과 함께 사용하면 Any 진단 메시지가 발생합니다 ASP0028 . 다음은 이러한 조건을 초래할 수 있는 코드의 예입니다.

.UseKestrel().ConfigureKestrel(options =>
{ 
    options.Listen(IPAddress.Any, ...);
})

규칙 설명

사용 가능한 Kestrel 모든 네트워크 인터페이스에서 들어오는 연결을 수신 대기하도록 구성하는 IPv6 권장 방법은 다음과 같습니다IPv6Any.

위반 문제를 해결하는 방법

문제가 있는 코드의 경우, `Any`를 `IPv6Any`로 교체하십시오.

인수를 ListenAnyIP(Int32) 지정하지 않고 메서드를 사용합니다.

.UseKestrel().ConfigureKestrel(options =>
{ 
-   options.Listen(IPAddress.Any, ...);
+   options.ListenAnyIP(...);
})

또는 다음 필드를 사용합니다.IPv6Any

.UseKestrel().ConfigureKestrel(options =>
{ 
-   options.Listen(IPAddress.Any, ...);
+   options.Listen(IPAddress.IPv6Any, ...);
})

경고를 표시하지 않는 경우

진단에는 ASP0028정보 수준 심각도가 있습니다. ko-KR: 서버에서 IPv6 사용을 완전히 비활성화하려는 경우, 이 경고를 표시하지 않도록 설정하십시오. 그러나 이 경우 이 문서에 언급된 성능 문제의 위험이 존재합니다.

IPv6 는 시스템 전체 또는 AppCtx 스위치 또는 환경 변수를 통해서만 .NET에 대해 사용하지 않도록 설정할 수 있습니다.