browserCaps与浏览器功能设置

使用 Web.config 文件中的 browserCaps 元素来定义浏览器的行为在 .NET Framework 2.0 中被否决,但仍受支持。此元素中的数据与浏览器定义文件 (.browser) 中的信息合并在一起。在本次学习将会连带.browser文件的相关内容


元素


说明


filter


可选的元素。

指定搜索字符串列表,通过这些字符串可以将各个设置分别应用于特定的浏览器定义。


result


指定 HttpCapabilitiesBase 派生类,该类用于保存分析 browserCaps 节所得的结果。这些功能针对各个浏览器存储为键/值字符串对。

此元素在 .NET Framework 2.0 版中仍然适用。


use


指定 HTTP 请求字符串,该字符串用于分析存储在 filter 和 case 元素中的浏览器功能信息。

另外filter包含子元素case,case中则是filter筛选过后保存的结果。结果以键值对形式,保存到result中执行的类型中。至于筛选的对象则是use元素中指定的HTTP头请求字段。

如下面的配置,定死了匹配的USER-AGENT包含Chrome/52.0.2743.116,那给浏览器的功能设置则是browser到cookies这部分信息。

<browserCaps>

<use var="HTTP_USER_AGENT"/>

<filter>

<case match="Chrome/52.0.2743.116">

browser=Chrome

version=52

majorver=52

minorver=0

hopegi=mr.hopegi

cookies=false

</case>

</filter>

</browserCaps>

若想在代码中获取浏览器的功能,则通过下面的方式。

object cookies = Request.Browser.Cookies;

cookies = Request.Browser["cookies"];

var hg = Request.Browser["hopegi"];

按峰哥介绍的,*.broswer文件是用于给IIS判断当前发请求过来的浏览器的类型。而判断出这个浏览器类型之后,对响应或者响应内容作出不同的更改。如未识别的浏览器且默认浏览器对cookies则判定为不支持cookies,那在Forms认证时,验证票则不会通过cookie形式保存到浏览器,结果那浏览器有可能无法正常通过认证。

而*.browser文件是在.NET Framework2.0中推出的,例子如下

对User-Agent的匹配在userAgent match一节。对浏览器功能的定义在<capabilities>一节中。

预定义的浏览器定义文件存储在 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 目录中。应用程序级别的浏览器定义文件可以放在应用程序的 App_Browsers 目录中。在这两个位置中,浏览器定义文件都必须具有 .browser 文件扩展名。不要更改 ASP.NET 随附的浏览器定义文件,因为 Service Pack 可能会更新这些文件,从而改写您所做的更改。相反,您应该创建新的 .browser 文件,并在新的 browser 定义中使用 parentID 属性来继承设置,或者使用 refID 属性向现有的浏览器定义添加功能。

在运行时,浏览器定义文件信息将合并到 BrowserCapabilitiesFactory 对象中的已知浏览器的集合内。发出请求时,ASP.NET 根据请求标头标识请求的浏览器,并编译一个与请求的浏览器类型相对应的 HttpBrowserCapabilities 对象。这一步是这样完成的:在开始时使用一个空字典,然后对浏览器定义树应用以下递归步骤:

  1. 从默认浏览器定义开始,默认浏览器定义始终被认为是一个成功的匹配。
  2. 将此浏览器定义中指定的功能值合并到此浏览器的功能字典中。浏览器定义中指定的值会重写父浏览器定义中设置的值。
  3. 计算每个子定义以确定是否匹配。对于每个匹配的子定义,重新从步骤 1 开始。在网关定义之后计算浏览器定义。如果用户代理匹配多个浏览器定义或多个网关定义,将会在运行时引发异常。

HttpBrowserCapabilities 对象被写入缓存,可以被来自同一类型的浏览器发出的其他请求再次使用。

对位于 App_Browsers 目录中的 .browser 文件所做的更改会使缓存无效,并且下一次请求将导致应用程序重新编译。但是,如果对 %SystemRoot%\Microsoft.NET\Framework\version\CONFIG\Browsers 目录中的 .browser 文件做出了更改,您必须使用 %SystemRoot%\Microsoft.NET\Framework\version\aspnet_regbrowsers.exe 工具手动重新编译应用程序,或者使用 BrowserCapabilitiesCodeGenerator 类以编程方式重新编译应用程序。

总结一下,browserCaps 元素和browser文件都是为了定义浏览器的功能,对于浏览器而言,它把请求发往服务器,告知服务器自身信息是通过User-Agent请求头。而服务器断定请求来自于哪个浏览器甚至于当前发来请求的浏览器具备哪些功能,此时需要这个浏览器功能设置的配置信息。它按照请求头的信息(通常是User-Agent)匹配,匹配成功后断定浏览器的类型。从而也确定浏览器具备的功能。另外郁闷的是在应用程序目录中建的App_Browser文件夹中的browser文件都不生效。

参考

browserCaps 元素(ASP.NET 设置架构)

https://msdn.microsoft.com/zh-cn/library/sk9az15a(VS.80).aspx

浏览器定义文件架构(browsers 元素)

https://msdn.microsoft.com/zh-cn/library/ms228122(v=vs.80).aspx

时间: 2024-10-26 04:12:15

browserCaps与浏览器功能设置的相关文章

[转]保护眼睛的Windows和IE、Firefox、谷歌等浏览器颜色设置

保护眼睛的Windows和IE.Firefox.谷歌等浏览器颜色设置  长时间在电脑前工作,窗口和网页上的白色十分刺眼,眼睛很容易疲劳,也容易引起头痛,其实我们可以通过设置Windows窗口和软件的颜色设置保护自己的眼睛,总结网上的设置,自己觉得下面是最优的颜色设置方案.眼科专家建议保护眼睛的颜色为:色调:85,饱和度:123,亮度:205.这个颜色就是柔和的豆沙绿色,这个颜色看着眼睛不会那么疲劳. Windows眼睛保护色设置步骤: 右击"桌面"-->"属性"

android 下 利用webview实现浏览器功能

android 下 利用webview实现浏览器功能: 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedInstanceState) 方法中)添加如下代码: //#region WebView wb=(WebView)findViewById(R.id.Wb_Main); //设置WebView属性,能够执行Javascript脚本 wb.getSettings().setJavaScriptEnabled(

Eclipse自动补全功能和自动生成作者、日期注释等功能设置

以前想实现添加代码作者信息的东西,但不知道怎样实现,今天终于在网上无意中找到解决办法了 Eclipse自动生成作者.日期注释等功能设置 在使用Eclipse 编写Java代码时,自动生成的注释信息都是按照预先设置好的格式生成的. 修改作者.日期注释格式:打开Windows->Preferences->Java->Code Style->Code Templates,点击右边窗口中的Comments,可以看到有很多选项,我们便可对此注释信息模板进行编辑. 如我们希望在一个Java文件

微信支付--申请微信支付,商户功能设置详细说明

原文链接:http://www.cnblogs.com/True_to_me/p/3565039.html 微信支付已经正式开放了,所有的"认证服务号"都可以申请.但由于关系到支付权限的申请,整个流程会比较复杂,而且有很多具体的涉及技术接口的细节一般人还真弄不明白.而且已经有商户告诉我们发现有第三方网站在教商户申请微信时让不了解真相的商户把自己的微信支付直接就绑定了第三方网站的支付接口,给商户带来了很大的麻烦.非常的不负责任.大家一定要仔细阅读下面的内容,以免绑定后才发现是绑定了别人的

UIButton部分功能设置(一):

UIButton作为最常用的界面元素,其高效率的用户交互,常常在众多元素中,作为首选,其他许多细小的设置,又容易忘记,为了自己以后可以方便查找,整理笔记如下: // UIButton中内置了UIImageView和UILable两个属性,这两个属性都是read-only,修改只能通过SET方法来处理: 代码样例如下: UIButton *btn = [[UIButtonalloc]init]; [btn setImage:[UIImageimageNamed:@"xxx.png"] f

java_Eclipse自动生成作者、日期注释等功能设置_导入 xml方式

常规方式 随便百度个 类比 http://blog.sina.com.cn/s/blog_4080505a0101guoh.html 这里主要介绍配好后,导出,xml,迁移环境时 导入 comment 和code同时选中 ,导出用export ,导入用import 我自己用的: codetemplates.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?><tem

TeeChart控件的安装与常用 功能设置

TeeChart控件的安装 TeeChart 7.0 With Source在Delphi 7.0中的安装 一.删除Delphi7自带TeeChart  1.Component -> install Packages 中 Remove 所有以Tee开头的包,OK,关闭Delphi7. 2.删除Delphi\Bin目录下的DclTee70.bpl;  3.删除 \Windows\System32(或System)目录的以下文件:  Tee70.bpl  Teedb70.bpl  Teeqr70.b

【转】Selenium2(WebDriver)总结(一)---启动浏览器、设置profile&amp;加载插件

基本读踩过的坑,泪流满面··· 本文主要记录下在使用selenium2/webdriver时启动各种浏览器的方法.以及如何加载插件.定制浏览器信息(设置profile)等 环境搭建可参考我的另一篇文章:http://www.cnblogs.com/puresoul/p/3483055.html 一.Driver下载地址: http://docs.seleniumhq.org/download/ 二.启动firefox浏览器(不需要下载驱动,原生支持) 1.firefox安装在默认路径下: 1 /

博客园 打赏功能设置,友言,友荐,分享功能设置

一.jiaThis 分享到设置 <!-- JiaThis Button BEGIN --><script type="text/javascript" src="http://v3.jiathis.com/code/jiathis_r.js?move=0&btn=r5.gif" charset="utf-8"></script><!-- JiaThis Button END --> 二.友荐