用途:在编写或修改 src/libraries/System.Net.*、src/libraries/System.Private.Uri 及 src/libraries/Common/src 中网络相关代码时提供实现指导,同时作为 System.Net 变更的评审触发条件。通用 dotnet/runtime 规范应参考 .github/instructions/ 下的路径级说明、build-and-test 技能与 code-review 技能。
主要能力与决策框架: 资源生命周期:原生句柄用 SafeHandle 并在 ReleaseHandle 释放;托管 IDisposable 单一所有者;池化资源成功归还、故障释放;临时缓冲用 ArrayPool<byte>.Shared 并在 finally 归还。Dispose 必须幂等且不抛异常,错误路径也要释放。 连接池:尊重 HttpConnectionPoolManager 限制与 PooledConnectionIdleTimeout;获取连接使用带 CancellationToken 的异步等待;归还前校验状态,协议错误则排空;淘汰时优雅关闭。不得持锁做 I/O 或 await,热路径优先 Interlocked。 跨平台互操作:新声明用 [LibraryImport] 而非 [DllImport];结构布局在 x86/x64/arm64 上校验;字符串编组 Unix 用 Utf8、Windows 用 Utf16;检查 errno/GetLastPInvokeError 并映射为 SocketException/Win32Exception。平台代码放在 .Windows.cs/.Unix.cs/.OSX.cs 分部文件,Interop 声明位于 Common/src/Interop/<platform>/。 协议合规:HTTP 头大小写不敏感、处理折行、拒绝非法字符;HTTP/2 遵守流控窗口与 MAX_FRAME_SIZE,干净发送 GOAWAY;HTTP/3/QUIC 通过 QuicConnection/QuicStream 使用 MsQuic;Content-Length 与实际字节校验;chunked 处理末块与 trailers。遵循 RFC 9110/9112、9000/9001。 异步模式:同步完成常见时用 ValueTask<T>;库代码始终 ConfigureAwait(false);接受 CancellationToken 并链接内部超时;不在 lock 内 await,异步互斥用 SemaphoreSlim;用 PooledValueTaskSource。取消须及时中断 I/O。 安全:TLS 默认 SslProtocols.None(由 OS 协商),不得硬编码 TLS 1.0/1.1;证书校验默认拒绝无效证书;凭证不得记录日志并会话后清除;SslStream 默认 RequireEncryption。
评审委托:评审涉及 System.Net 的 PR 时,作为子任务调用 @system-net-review agent,其携带完整结构化清单。若从已有评审 agent 调用,应要求仅收集反馈项返回、不发布到 GitHub,由父评审负责收集、去重与发布。本技能不重复 agent 的 CHECK 项。
必要用法与测试:测试使用进程内回环服务器(LoopbackServer、Http2LoopbackServer、Http3LoopbackServer、LoopbackProxyServer);平台/特性门控用 ConditionalFact/ConditionalTheory/ConditionalClass 与 PlatformDetection,已知失败用 ActiveIssue 并附 issue 链接;测试须用 using/await using 清理所有 socket、流与服务器;压力测试放在 tests/StressTests/。具体命令与价格、版本等未在资料中提供。