惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recorded Future
Recorded Future
C
Cyber Attacks, Cyber Crime and Cyber Security
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Scott Helme
Scott Helme
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
P
Palo Alto Networks Blog
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
WordPress大学
WordPress大学
博客园 - 聂微东
L
LINUX DO - 最新话题
月光博客
月光博客
小众软件
小众软件
T
Troy Hunt's Blog
A
Arctic Wolf
量子位
I
Intezer
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
S
Schneier on Security
Schneier on Security
Schneier on Security
NISL@THU
NISL@THU
T
Threat Research - Cisco Blogs
TaoSecurity Blog
TaoSecurity Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园_首页
有赞技术团队
有赞技术团队
N
News and Events Feed by Topic
美团技术团队
The Cloudflare Blog
P
Privacy International News Feed
S
Security Affairs
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
G
GRAHAM CLULEY
N
News | PayPal Newsroom
Apple Machine Learning Research
Apple Machine Learning Research
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V
Vulnerabilities – Threatpost
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
Application and Cybersecurity Blog
Application and Cybersecurity Blog
IT之家
IT之家
Hacker News: Ask HN
Hacker News: Ask HN
雷峰网
雷峰网

博客园 - 破宝

imdict-chinese-analyzer .NET转写版 SQLite全文检索(2) SQLite全文检索(1) 80块钱毁掉“猪八戒”的信誉 有点郁闷:MSDN文档中MidpointRounding.AwayFromZero的翻译错误 闲话“正版”:正版软件和盗版软件的区别到底是什么? 闲话“正版”:真是因为“缺钱”吗? 又一个疑似Bug: XmlDataSource 控件的 Data 属性动态改变时,缓存不会自动失效 立此存照:System.Net.Mail 的 bug About GridView, HyperLinkField, UrlEncode 关于 GridView,HyperLinkField,UrlEncode WPF教程(译文)(第二部分) 破宝(percyboy)的自选精华版 破宝(percyboy)的留言板(2008/3~) WPF 教程(译文)(第一部分) Atlas 学习记录 ajaxnet4j beta Releases -- A Java Implementation of Ajax.NET Professional Library 好消息:Ajax.NET Professional open-sourced 及 ajaxnet4j 即将发布 NDoc Reloading: Kevin 留给我们的 NDoc 2.0 Alpha
当 ASP.net Mobile Controls 碰到“中国特色”的 CMWAP / UNIWAP
破宝 · 2009-02-20 · via 博客园 - 破宝

一直觉得 ASP.net Mobile Controls 很有用,它可以根据客户端的 UserAgent 自动判断客户端浏览器的能力,自动选择最适合的方式(WML 1.1,XHTML Basic, PC 用的 HTML, 日本 Docomo 和 Willcom 特有的 CHTML 等等)输出内容。

国内说起手机上网,一般称呼是说 WAP。其实目前市场中的很多手机早已不仅仅只支持 WML 1.1 这样的早期格式(如果你试过就知道,WML 居然无法设定字体颜色),新款手机大都开始支持 WAP 2.0 也就是支持 XHTML Basic 格式的内容,不少智能手机也开始支持直接浏览 PC 站点(当然手机屏幕小,浏览 PC 站点其实多半是“应急”,并不见得舒服)。

前一阵看到这么一条新闻说,天下网推出国内首家 WAP 2.0(XHTML)手机站点。其实,把 WAP 1.x (WML 1.1) 和 WAP 2.0 (XHTML) 分开来制作和维护,会很不方便,如果再加上 PC 版那就更多事情要做了。如果使用微软的技术,使用 ASP.net Mobile Controls 来制作手机版站点,就可以很便利的解决这一问题。

因为 ASP.net Mobile Controls 主要是基于 UserAgent 来判断客户端浏览器能力的,所以,如果使用 CMNET 这样的方式上网,是没有什么问题的,绝大多数终端都可以顺利的找到适合自己的格式(WML 1.1 或者 XHTML Basic)。可如果碰到“中国特色”的 CMWAP、UNIWAP 就要瘸腿了。

其实 CMWAP、UNIWAP 之所以“中国特色”,我的看法跟很多人不大一样。我觉得不能仅因为移动或联通人为地把手机上网分成两种方式,就说这是“中国特色”,这种情况在其他国家也有先例。比如日本 Softbank 的常用上网方式就分成三种: Yahoo!Mobile(这个相当于我们的 CMWAP、UNIWAP 方式),PC Site Browser (这个是指通过一个转换软件浏览 PC 站点的服务),PC Site Direct (这个相当于我们的 CMNET 无限制),和我们类似,这三种上网方式的价格也相差很多。

我觉得 CMWAP、UNIWAP “中国特色”是从技术角度看,因为它人为地屏蔽了客户端浏览器发出的 UserAgent!(当然它还屏蔽了很多其他的东西) 缺了 UserAgent ,强大的 ASP.net Mobile Controls 就算“瘸腿”了。

但是尽管瘸腿,ASP.net Mobile Controls 解决方案仍然具有易于制作和维护的特点(因为它制作时不需要特意区分 WML 和 XHTML Basic 等)。针对 CMWAP、UNIWAP 的特点,我推荐一个 .browser 文件:

<browsers>
  <browser id="ChineseWap" parentID="Default">
    <identification>
      <userAgent match="^\s*$" />
    </identification>
    <capabilities>
      <capability name="preferredRenderingMime"              value="text/html" />
      <capability name="preferredRenderingType"              value="xhtml-mp" />
    </capabilities>
    <controlAdapters markupTextWriterType="System.Web.UI.XhtmlTextWriter" />
  </browser>

  <browser id="ChineseWapOldModel" parentID="ChineseWap">
    <identification>
      <header name="Host" match="^wap" />
    </identification>
    <capabilities>
      <capability name="preferredImageMime"                  value="image/vnd.wap.wbmp" />
      <capability name="preferredRenderingMime"              value="text/vnd.wap.wml" />
      <capability name="preferredRenderingType"              value="wml11" />
    </capabilities>
  </browser>
</browsers>

第一个 browser 标签“ChineseWap”的意思是将 XHTML Basic 形式作为 CMWAP、UNIWAP 用户(UserAgent 为空白)的默认值。第二个 browser 标签“ChineseWapOldModel” 的意思是,如果 CMWAP、UNIWAP 用户访问的是 wap.xxxx.com/.....aspx 这种形式的 URL 时,默认输出将是 WML1.1。

优点及注意事项:

(1) 或许你已经看出来了,我的方案实际上是通过域名来区分 WAP 1.x 版和 XHTML 版的,在 UserAgent 为空的情况下,访问wap.xxxx.com 是 WAP 1.x 输出,访问主站域名是 XHTML 输出。

(2) 若 UserAgent 不为空,则无论访问哪个域名,都按 UserAgent 去自动匹配适合的形式。比如在 PC 上访问 wap.xxxx.com 返回的仍然是 HTML 而不是 WML。或者通过 CMNET 上网访问 wap.xxxx.com 时仍然会根据 UserAgent 匹配适合的版本。兼容性较好。

(3) 事前应该告诉你的用户:如果使用 CMWAP 、UNIWAP 方式浏览本站时,请根据您的手机选择适合的版本:如果您的手机仅支持 WAP 1.x 则请访问 wap.xxxx.com 域名。如果您不确定,可以先试一下主站是否能访问,访问不了再选 wap.xxxx.com 域名。

忘了说了一点:将这个 .browser 文件保存在 ~/App_Browsers 文件夹下就可以了。