【发布时间】:2013-02-20 12:07:00
【问题描述】:
我有一个使用第三方报告组件的 ASP.NET 站点。每当客户端浏览器未在请求标头中指定 User-Agent 时,此组件就会抛出 NullReferenceException,从而导致该组件行为不端。
这基本上是一个奇怪的场景,我只是想想出一个解决方法。我不知道谁/哪个客户端没有指定用户代理,这似乎是 IMO 的错误形式,但我们必须处理它产生的异常。我已经向第三方记录了一份关于他们报告组件中的错误的支持票,但我对这条路线的成果有多大表示怀疑。所以我的想法只是检测User-Agent 何时为空白并将其默认为只是为了安抚报告组件。但是,我似乎无法更改 Request.Headers 集合中的任何内容。我得到以下异常:
Operation is not supported on this platform.
我开始相信我无法做到这一点。我了解为什么 ASP.NET 不允许这样做,但我还没有想出任何其他解决方法。
更新:在 penfold 的建议下,我尝试将 User-Agent 添加到 Request.Headers 集合 using an HttpModule。这将其添加到 Headers 集合中,但没有更新 Request.UserAgent 属性,这是导致报告组件失败的原因。我一直在查看 .NET Reflector 以确定如何设置该属性以便我可以更新它,但我还没有想出任何东西(不只是一个私有字段驱动我可以找到的属性)。
【问题讨论】:
-
您能否提供您尝试更改 HttpWebRequest 标头的代码?
-
不,我没有使用 HttpWebRequest——我正在尝试更改传入请求的标头(HttpRequest 对象)。例如:Request.Headers.Set("User-Agent", "some user agent")
标签: asp.net crystal-reports http-headers httprequest user-agent