网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

Request.Browser.Crawler 属性的工作原理分析

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/03/12

【编者按】:网学网ASP.net为您提供Request.Browser.Crawler 属性的工作原理分析参考,解决您在Request.Browser.Crawler 属性的工作原理分析学习中工作中的难题,参考学习。

       昨天同事问我如何判断一个请求是否为搜索引擎,我的回答是通过UserAgent字符串自己去判断,而他告诉我.net提供了Crawler属性。我还真没有使用过这个属性,但是我第一反应是微软做的这东西怎么可能把所有搜索引擎都能判断出来呢?这是不可能的阿,至少据我所知网络中还有很多“特殊的搜索引擎”比如说Email的爬虫。我想研究一下什么样特征的搜索引擎能够让Crawler属性为真。

       在Web项目中大家都知道有一个Request这个对象,这个对象下面还有一个Browser属性,是描述浏览器的一些属性的类实例,这个Browser下面还有一个布尔值属性Crawler,下面是MSND的解释:

 

让我们看看它的值是如何得到的,以下代码均通过Reflector查看System.web.dll获得。

public bool Crawler
{
    get
    {
        if (!this._havecrawler)
        {
            this._crawler = this.CapsParseBool("crawler");
            this._havecrawler = true;
        }
        return this._crawler;
    }
}

很明显这里的CapsParseBool("crawler")是关键地方所在,我们继续看这个方法中如何实现的。
private bool CapsParseBool(string capsKey)
{
    bool flag;
    try
    {
        flag = bool.Parse(this[capsKey]);
    }
    catch (FormatException exception)
    {
        throw this.BuildParseError(exception, capsKey);
    }
    return flag;
}


我们看到这里就有些明白了,这里的flag就是存储当前请求是否为搜索引擎的变量。而这个值真正存储在this[capsKey]中,我们继续我们的探索。

public virtual string this[string key]
{
    get
    {
        return (string) this._items[key];
    }
}

我们又进了一步,真正的值被存储在_items这个集合中,我们来看看它是如何定义的。

private IDictionary _items;
现在我们的问题来了:

这是一个字典接口,它是如何初始化并且得到这个crawler Key/Value键值对的呢?目前我们好像没有什么头绪继续向下查找这个Clawler键对应的值是如何得到的了。

我们回头理一下思路:

Crawler属性是Browser对象的,Browser又是Request类的一个属性。所以初始化Crawler有可能在Browser初始化的时候。Request这个对象是客户端发出请求达到服务器端后,服务器端负责初始化的。Browser对象一定会根据当前请求的Request来初始化自己,所以我们有必要看看Browser这个属性是如何实现的了。

本新闻共6页,当前在第1页  1  2  3  4  5  6  

  • 上一篇资讯: ASP.NET的绑定(binding)
  • 下一篇资讯: My命名空间(二)
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号