asp.net – 我可以修改Request.Headers集合吗?
我有一个使用第三方报告组件的ASP.NET站点.只要客户端浏览器未在请求标头中指定User-Agent,就会抛出NullReferenceException,从而导致此组件行为异常.
这基本上是一个奇怪的场景,我只是试图想出一个解决方法.我不知道是谁/什么客户端没有指定用户代理,这似乎是IMO的错误形式,但我们必须处理它产生的异常.我已经与第三方记录了关于其报告组件中的错误的支持票,但我对这条路线的成效有疑问.所以我的想法只是检测用户代理何时为空,并将其默认为只是为了安抚报告组件.但是,我似乎无法更改Request.Headers集合中的任何内容.我得到以下异常: Operation is not supported on this platform. 我开始相信我无法做到这一点.我理解为什么ASP.NET不允许这样做,但我没有提出任何其他解决方法. 更新:在penfold的建议下,我尝试将User-Agent添加到Request.Headers集合using an 解决方法
我认为处理此问题的最佳方法是使用一个http模块来检查标头并在必要时注入用户代理.
如您所知,您无法在Headers对象上使用set方法.相反,您必须通过受保护的属性将用户代理字符串注入到标头中,这些属性可以通过反射访问,如this question的答案中所述. UPDATE 遗憾的是,Request.UserAgent不使用Request.Headers中保存的信息,而是在HttpWorkerRequest中调用GetKnownRequestHeader方法.这是一个抽象类,通过查看反编译的库代码,实际实现因宿主环境而异.因此,我无法通过反射以可靠的方式看到替换用户代理字符串的方法.你可以滚动你自己的WorkerRequest类,但是为了努力,我认为收益不值得. 很抱歉是否定的,但我认为不可能以简单的方式在Web应用程序中设置用户代理.目前您最好的选择是对用户代理执行预检查,如果请求没有返回,则浏览器不支持错误消息. 您还可以调查先前注入的内容,例如在IIS或代理服务器上(如果使用的话). 此外,我建议将此问题报告给SAP.我知道他们现在正在积极研究Viewer,谁知道他们可能会修复它,甚至可能会增加对Opera的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – IIS7中的SQL Server和Windows身份验证
- asp.net – 与?之间的区别?
- 会话对象不更新ASP.NET
- asp.net-mvc – 寻找第三方CMS与MVC网站集成
- asp.net-mvc-3 – MVC HttpPostedFileBase总是空
- asp.net-mvc – ModelState.IsValid或Model.IsValid?
- asp.net-mvc-3 – Azure ACS – 最佳实践实施
- asp.net-mvc-3 – ViewBag.Title错误
- asp.net-mvc – 如何使用ASP.NET MVC 1.0从文件系统直接提供
- asp.net-mvc – 自定义HtmlHelper扩展方法在View中不可用?
- asp.net-mvc – 使用mvc的主要目的
- ASP.NET MVC的MS应用程序示例?
- Exceptionless - .Net Core开源日志框架
- 我心中的ASP.NET Core 新核心对象WebHost(一)
- .net – 扩展/插件通信的体系结构
- 在ASP.NET中添加动态控件,1.1和2.0之间有区别吗?
- asp.net-mvc – MVC Razor – 如何向自己提交表单
- asp.net-mvc-3 – 基于域的ASP.net MVC 3输出缓存
- asp.net-mvc-4 – 如何在MVC4 ViewModel,Control
- asp.net-mvc – ASP.NET MVC中的替代用户管理