ASP0028: 代わりに
値 | |
---|---|
ルール ID | ASP0028 |
カテゴリ | 使用法 |
修正が中断ありか中断なしか | なし |
原因
IPv6
をサポートするサーバー コンピューターでは、IPv6AnyAnyAny
が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
診断には、Information レベルの重大度があります。 サーバーで IPv6
の使用を完全に無効にすることを意図している場合は、この警告を抑制しますが、その場合は、この記事で説明されているパフォーマンスの問題が発生する可能性があります。
IPv6
は、システム全体で無効にすることも、 AppCtx スイッチまたは環境変数を介してのみ .NET に対して無効にすることもできます
ASP.NET Core