asp.net wap开发心得

来源:互联网 发布:cocos3d unity3d 编辑:程序博客网 时间:2024/06/11 22:01
asp.net wap开发心得
用ASP.NET开发,ASP.NET开发WAP站点,实在简单,就是一个移动控件的运用,根本不用懂WML语法.唯一不同的,就是一个ASPX文件可以支持多个FORM,不同FORM之间可以切换, 
最后ASP.NET根据访问的设备,输出不同的内容, 
如果用IE访问就输出HTML,手机访问,输出WML, 
不过在开发过程中也遇到了很多问题,一些问题总结如下: 
1.模拟器选择: 
WINWAP, 
M3Gate, 
UP.SDK4.0,(推荐) 
OPenWave 5.0 (测试时需要), 
OPenWave6.2, (IIS 6.0应用,IIS5.0可能显示,但会有问题) 
CheckCom WAPBrowser 3.2 
模拟器问题: 
ASP.NET把一些常有的模拟器,的配制信息用正则表达式写在Machine.config里 
在上述的模拟器中,我只有UP.SDK4.0,OPenWave 5.0, 
他们只是一个公司的产品: 
需要下载,配制文件驱动更新:现在最新版本是:Device 4下载请到这里下载: 
www.microsoft.com/downloads/details.aspx?FamilyId ... B1-4DD61A5B7CCB&displaylang=en 
但是,即使驱动更新以后,还是一些设备不能访问: 
这时需要强制输出WML: 
在web.config 
添加下面内容<system.web>下 
<browserCaps> 
<result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
<use var="HTTP_USER_AGENT"/> 
preferredRenderingType = "wml11" 
preferredRenderingMime = "text/vnd.wap.wml" 
preferredImageMime = "image/vnd.wap.wbmp" 
</browserCaps> 
如果定义相关其它属性可以完整的移动设置属性: 
<browserCaps> 
<result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> 
<use var="HTTP_USER_AGENT"/> 
browser=Unknown 
version=0.0 
majorversion=0 
minorversion=0 
frames=false 
tables=false 
cookies=false 
backgroundsounds=false 
vbscript=false 
javascript=false 
javaapplets=false 
activexcontrols=false 
win16=false 
win32=false 
beta=false 
ak=false 
sk=false 
aol=false 
crawler=false 
cdf=false 
gold=false 
authenticodeupdate=false 
tagwriter=System.Web.UI.Html32TextWriter 
ecmascriptversion=0.0 
msdomversion=0.0 
w3cdomversion=0.0 
platform=Unknown 
css1=false 
css2=false 
xml=false 

 

mobileDeviceManufacturer = "Unknown" 
mobileDeviceModel = "Unknown" 

gatewayVersion = "None" 
gatewayMajorVersion = "0" 
gatewayMinorVersion = "0" 

preferredRenderingType = "wml11" 
preferredRenderingMime = "text/vnd.wap.wml" 
preferredImageMime = "image/vnd.wap.wbmp" 

defaultScreenCharactersWidth = "12" 
defaultScreenCharactersHeight = "6" 
defaultScreenPixelsWidth = "96" 
defaultScreenPixelsHeight = "72" 
defaultCharacterWidth = "8" 
defaultCharacterHeight = "12" 
screenBitDepth = "1" 
isColor = "false" 
inputType = "telephoneKeypad" 

numberOfSoftkeys = "0" 
maximumSoftkeyLabelLength = "5" 

canInitiateVoiceCall = "false" 

canSendMail = "true" 
hasBackButton = "true" 
rendersWmlDoAcceptsInline = "true" 
rendersWmlSelectsAsMenuCards = "true" 
rendersBreaksAfterWmlAnchor = "false" 
rendersBreaksAfterWmlInput = "false" 
rendersBreakBeforeWmlSelectAndInput = "true" 
requiresAttributeColonSubstitution = "true" 
requiresPhoneNumbersAsPlainText = "false" 
requiresUrlEncodedPostfieldValues = "false" 
requiredMetaTagNameValue = "" 
rendersBreaksAfterHtmlLists = "true" 
requiresUniqueHtmlCheckboxNames = "true" 
requiresUniqueHtmlInputNames = "true" 
requiresUniqueFilePathSuffix = "true" 
supportsCss = "false" 
hidesRightAlignedMultiselectScrollbars = "false" 
canRenderAfterInputOrSelectElement = "true" 
canRenderInputAndSelectElementsTogether = "true" 
canRenderOneventAndPrevElementsTogether = "true" 
canCombineFormsInDeck = "true" 
canRenderMixedSelects = "true" 
canRenderPostBackCards = "true" 
canRenderSetvarZeroWithMultiSelectionList = "true" 
supportsImageSubmit = "true" 
supportsSelectMultiple = "true" 
requiresHtmlAdaptiveErrorReporting = "false" 
requiresContentTypeMetaTag = "false" 
requiresDBCSCharacter = "false" 
requiresOutputOptimization = "false" 
supportsAccesskeyAttribute = "false" 
supportsInputIStyle = "false" 
supportsInputMode = "false" 
supportsIModeSymbols = "false" 
supportsJPhoneSymbols = "false" 
supportsJPhoneMultiMediaAttributes = "false" 
maximumRenderedPageSize = "2000" 
requiresSpecialViewStateEncoding = "false" 
requiresNoBreakInFormatting = "false" 
requiresLeadingPageBreak = "false" 
supportsQueryStringInFormAction = "true" 
supportsCacheControlMetaTag = "true" 
supportsUncheck = "true" 
canRenderEmptySelects = "true" 
supportsRedirectWithCookie = "true" 
supportsEmptyStringInCookieValue = "true" 
cachesAllResponsesWithExpires = "false" 
requiresNoSoftkeyLabels = "false" 
defaultSubmitButtonLimit = "1" 

supportsBold = "false" 
supportsItalic = "false" 
supportsFontSize = "false" 
supportsFontName = "false" 
supportsFontColor = "true" 
supportsBodyColor = "true" 
supportsDivAlign = "true" 
supportsDivNoWrap = "false" 
supportsCharacterEntityEncoding = "true" 

isMobileDevice="false" 
</browserCaps> 
具体属性的意思可以考试MSDN:设备功能列表 
ms-help://MS.MSDNQTR.2003FEB.2052/mwsdk/html/mwlrfDeviceCapabilitiesTable.htm 

2.链接: 
在同一个aspx文件,使用Link控件的,#FORM来切换不同Form时在 OPenWave 5.0测试会出现错误! 
建议在程序通过ActiveForm来做 
3.乱码: 
如果在开发过程出现乱码,通过修改Web.Config 
<globalization 
requestEncoding="gb2312" 
responseEncoding="gb2312" 
/> 
4.取消移动设备缓存: 
Page.Response.Expires = -1; 
Response.CacheControl = "Public"; 
5.重定向 
重定向通过 
RedirectToMobilePage函数 
不过使用过程中可能会出现一些问题 
建议用Link控件来代替