为 HttpClient 设置用户代理类型
在代理内部使用了 Microsoft Ajax 技术的 ASP.NET WebForm 页面的时候,比如说,SSRS 的页面,可能会遇到这样的错误
"`Sys.WebForms` is undefined in Chrome (latest version)"
实际的原因倒是很简单,ASP.NET 内部有一个识别客户端代理是否支持 Ajax 的机制,它依赖于客户端所使用的浏览器,内部是通过检查 User-Agent 这个请求头来判断的。对于 ASP.NET 不能识别的浏览器,它认为不能保证浏览器支持 Ajax。导致 ScriptManager 中没有包含 MicrosoftAjaxWebForms.js 。也就找不到这个 Sys.WebForms 了。
See: stackoverflow.com/questions/3…
解决的方式就是为 HttpClient 配置有效的 User-Agent 值。
ProductInfoHeaderValue 类型提速了请求头中 User-Agent 请求头的表示,该请求头的定义来自 IETF 的 RFC 2616 .
对于 ProductInfoHeaderValue 来说,请求头的名称已经是 User-Agnet 了,它需要提供一个 ProductHeaderValue 来作为这个 User-Agent 请求头的值。ProductHeaderValue 的 Name 提供了产品的名字,而 Version 提供了产品的版本信息。
如果不需要版本信息,可以如下进行配置。
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.Add(
new ProductInfoHeaderValue(
new ProductHeaderValue("CNBlogs")));
为了方便,ProductInfoHeaderValue 还提供了一个直接使用字符串的构造函数。
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.UserAgent.Add(
new ProductInfoHeaderValue("CNBlogs", null));
更简单的方式是绕过这个复杂的 ProductInfoHeaderValue 类型,直接提供一个字符串,让 System.Net.Http.Headers.HttpRequestHeaders 自己去解析它。DefaultRequestHeaders 的类型就是这个 HttpRequestHeaders。
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add("User-Agent", "contact@cnblogs.com");
注意不要丢掉了中间的中划线 (-),
为了防止写错字符串,还可以使用 HeaderNames 这个静态泪的属性
public static readonly string UserAgent;
这样就变成了
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add(HeaderNames.UserAgent, "contact@cnblogs.com");
See: learn.microsoft.com/en-us/dotne…
参考
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfehifa
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13