ASP0028: 대신 사용하는
| 가치 | |
|---|---|
| 규칙 ID | ASP0028 |
| 범주 | 사용 |
| 수정이 문제를 일으키는지 또는 일으키지 않는지 여부 | 주요 변경 아님 |
원인
지원하는 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에 대해 사용하지 않도록 설정할 수 있습니다.
ASP.NET Core