ASP.NET Core 中读取 UserAgent 的正确姿势

今天读了 Andrew Lock 的2篇博文学到的招式,记录一下。

两篇博文的链接:

之前的读取 UserAgent 的代码:

var userAgent = context.HttpContext.Request.Headers[HeaderNames.UserAgent].ToString();

重构后的性能更好的代码:

string? userAgent = context.HttpContext.Request.Headers.UserAgent;

1)用属性读取取代 Indexer 读取,来自这个 PR 运用 default interface methods 提升性能的巧妙实现
2)去掉显式 ToString,StringValues 中只有一个值时,可以避免 ToString 的开销,对于 UserAgent,通常只有一个值

另外,需要注意的是,去掉 ToString,Headers.UserAgent 会出现 null 值,而Headers.UserAgent.ToString() 不会出现 null 值。

posted @ 2025-10-08 21:43  dudu  阅读(9)  评论(0)    收藏  举报