配置了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"
 
| 对此文章发表了评论 |

