您的位置:首页 > 编程语言 > ASP

ASP.Net 手机网站开发(WAP) 2010.10.10收集 未测试

2011-10-10 22:38 519 查看

ASP.Net 手机网站开发(WAP)

 一部分:开发环境配置

一、VS2005自带的仿真器

VS2005已经自带了用于手机程序开发用的设备仿真器,打开VS2005 在工具->设备仿真器管理器下面可以看到 Pocket PC 2003和SmartPhone 2003的仿真程序。

右键选择其中一个,然后选择Connect(连接),即可看到一个仿真的手机了。

二、安装和VS2005配套的仿真器

需要依次安装以下程序:(当然先要装VS2005)

1、ActiveSync 4.0以上(上网用的,下面会详细说明),你可以从以下连接下载,或者直接到MicroSoft 官方网站上下载。(这是ActiveSync 4.5版本)
http://nkbbs.org/up2/f/cse/0419/setup.msi 2、Windows Mobile 5.0 Pocket PC SDK.msi
(Windows Mobile 5.0 SmartPhone SDK.msi)
3、Windows Mobile 5.0 Emulator Images for Pocket PC - CHS.msi
(Windows Mobile 5.0 Emulator Images for Smartphone - CHS.msi)

以上两个是为了支持中文。

这个新版本的手机比上面那个2003的漂亮多了,呵呵。

windows moblie开发环境配置" alt=点击看大图 src="http://bbs.nankai.edu.cn/up2/f/cse/0419/smartphone.jpg" border=0 real_src="http://bbs.nankai.edu.cn/up2/f/cse/0419/smartphone.jpg">

你可以到http://mobile.winfans.net/ccs/blogs/siteadmin/ 这个Blog里面下载,
三、网络配置

首先在ActiveSyn中做File->Connection Settings...("连接设置"),在“允许连接到以下其中一个端口”中选择“DMA”,然后在VS2005主菜单里,选“工具”->“设备仿真器管理器”->选择你使用的那个模拟器,如果该模拟器还没有启动,则在菜单中选择“操作”->“连接”;如果已经启动了模拟器,则选择Cradle(插入底座)。然后ActiveSyn就会自动连接到该模拟器。连接后,AcitveSyn就可以同步该模拟器,而模拟器也可以连上互联网了,前提是你的PC已经上网了。^_^

四、用windows mobile 5.0 开发应用程序

1、新建一个项目

File->new->project->visual c#->smart device->windows mobile 5.0 smartphone->Device Application

2、后面的操作微软老大已经做的很好用了。拖拖拽拽就可以搞定了。

3、运行

直接运行就可以在上面的仿真器上运行该程序了,当然非常慢,要有耐心。

有条件的同学可以下载到自己的手机上(

二部分:内容设置

配置了IIS,,建立了一个asp.net mobile工程,又加上了关于WML MIME的映射条目,满以为可以测试了,于是启动M3Gate,但是失败了,地到的信息为:

  “UTF-8格式不支持”类的错误,于是检查web.config.的

  <globalization

   requestEncoding="utf-8"

   responseEncoding="utf-8"

   />

  修改为

  <globalization

   requestEncoding="gb2312"

   responseEncoding="gb2312"

   />

  再一次启动IE,测试通过,但是M3Gate 再一次报错:大致意思为:

  对于Text/Html格式不支持。

  思考,为什么M3Gate得到html格式的响应而不是wml呢?翻阅资料,结合asp.net的WAP框架知道,原来,对于设备,需要指定设备的类型,明确通过配置文件告诉框架如何解释asp.net的执行结果,这种执行可能解释成HTML也可能解释为WML,取决于设备是否匹配。那设备匹配是如何实现的呢?主要是通过machine.cong文件的或者web.config文件的

  <browserCaps> 节,通过HTTP_USER_AGENT 获取设备标示,只是框架获得设备的一些参数,从而在框架的配置下得到合适的wml文件。

  M3Gate不是标准的mobile设备,所以框架不认识,缺省状况下按照html设备输出,导致上述错误。

  解决办法:让框架知道M3Gate是一个设备。

  于是,查找machine.config ,取出其中的一段,复制到web.config

  <browserCaps>

   <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

   <use var="HTTP_USER_AGENT"/>

   <filter>

   <case match="M3Gate/0.6" >

   type = "Ericsson R380"

   version = ${browserMajorVersion}.${browserMinorVersion}

   majorVersion = ${browserMajorVersion}

   minorVersion = ${browserMinorVersion}

   preferredRenderingType = "wml11"

   preferredRenderingMime = "text/vnd.wap.wml"

   preferredImageMime = "image/vnd.wap.wbmp"

   inputType = "virtualKeyboard"

   canInitiateVoiceCall = "true"

   mobileDeviceManufacturer = "Ericsson"

   mobileDeviceModel = "R380"

   screenPixelsWidth = "310"

   screenPixelsHeight = "100"

   screenCharactersHeight = "7"

   screenBitDepth = "1"

   isColor = "false"

   maximumRenderedPageSize = "3000"

   isMobileDevice="true"

   </case>

  

   </filter>

  

  </browserCaps>

  除了其中的 “M3Gate“其他的都是拷贝过来的,测试运行,OK.

  那我怎么知道是 M3Gate/0.6 呢?我是建立了一个日志文件,在page_load事件中就进行纪录,通过文件的纪录获取得到我测试用的M3Gate的User_aAgent。代码如洗:

  private void _logHTTPHeader()

   {

   FileStream fs=new FileStream ("F:\\WUTemp\\Log.log",FileMode.OpenOrCreate ,FileAccess.Write );

   StreamWriter ws=new StreamWriter(fs);

   ws.WriteLine(DateTime.Now.ToShortTimeString () + Request.UserAgent +" "+Request.UserAgent );

   ws.Flush();

   ws.Close ();

   }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: