閱讀631 返回首頁    go 阿裏雲 go 技術社區[雲棲]


關於ASP.NET平台下的WAP開發

最近要做一個與聯通的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下載請到這裏下載:

但是,即使驅動更新以後,還是一些設備不能訪問:
這時需要強製輸出WML:
在web.config
添加下麵內容<system.web>下
None.gif<browserCaps>
None.gif            
<result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
None.gif            
<use var="HTTP_USER_AGENT"/>
None.gif                    preferredRenderingType = "wml11"
None.gif                    preferredRenderingMime = "text/vnd.wap.wml"
None.gif                    preferredImageMime = "image/vnd.wap.wbmp"
None.gif
</browserCaps>

如果定義相關其它屬性可以完整的移動設置屬性:
None.gif    <browserCaps>
None.gif            
<result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
None.gif            
<use var="HTTP_USER_AGENT"/>
None.gif
None.gif            browser=Unknown
None.gif            version=0.0
None.gif            majorversion=0
None.gif            minorversion=0
None.gif            frames=false
None.gif            tables=false
None.gif            cookies=false
None.gif            backgroundsounds=false
None.gif            vbscript=false
None.gif            javascript=false
None.gif            javaapplets=false
None.gif            activexcontrols=false
None.gif            win16=false
None.gif            win32=false
None.gif            beta=false
None.gif            ak=false
None.gif            sk=false
None.gif            aol=false
None.gif            crawler=false
None.gif            cdf=false
None.gif            gold=false
None.gif            authenticodeupdate=false
None.gif            tagwriter=System.Web.UI.Html32TextWriter
None.gif            ecmascriptversion=0.0
None.gif            msdomversion=0.0
None.gif            w3cdomversion=0.0
None.gif            platform=Unknown
None.gif            css1=false
None.gif            css2=false
None.gif            xml=false
None.gif
None.gif            mobileDeviceManufacturer = "Unknown"
None.gif            mobileDeviceModel = "Unknown"
None.gif
None.gif            gatewayVersion = "None"
None.gif            gatewayMajorVersion = "0"
None.gif            gatewayMinorVersion = "0"
None.gif
None.gif           preferredRenderingType = "wml11"
None.gif           preferredRenderingMime = "text/vnd.wap.wml"
None.gif           preferredImageMime = "image/vnd.wap.wbmp"
None.gif
None.gif            defaultScreenCharactersWidth = "12"
None.gif            defaultScreenCharactersHeight = "6"
None.gif            defaultScreenPixelsWidth = "96"
None.gif            defaultScreenPixelsHeight = "72"
None.gif            defaultCharacterWidth = "8"
None.gif            defaultCharacterHeight = "12"
None.gif            screenBitDepth = "1"
None.gif            isColor = "false"
None.gif            inputType = "telephoneKeypad"
None.gif
None.gif            numberOfSoftkeys = "0"
None.gif            maximumSoftkeyLabelLength = "5"
None.gif
None.gif            canInitiateVoiceCall = "false"
None.gif
None.gif            canSendMail = "true"
None.gif            hasBackButton = "true"
None.gif            rendersWmlDoAcceptsInline = "true"
None.gif            rendersWmlSelectsAsMenuCards = "true"
None.gif            rendersBreaksAfterWmlAnchor = "false"
None.gif            rendersBreaksAfterWmlInput = "false"
None.gif            rendersBreakBeforeWmlSelectAndInput = "true"
None.gif            requiresAttributeColonSubstitution = "true"
None.gif            requiresPhoneNumbersAsPlainText = "false"
None.gif            requiresUrlEncodedPostfieldValues = "false"
None.gif            requiredMetaTagNameValue = ""
None.gif            rendersBreaksAfterHtmlLists = "true"
None.gif            requiresUniqueHtmlCheckboxNames = "true"
None.gif            requiresUniqueHtmlInputNames = "true"
None.gif            requiresUniqueFilePathSuffix = "true"
None.gif            supportsCss = "false"
None.gif            hidesRightAlignedMultiselectScrollbars = "false"
None.gif            canRenderAfterInputOrSelectElement = "true"
None.gif            canRenderInputAndSelectElementsTogether = "true"
None.gif            canRenderOneventAndPrevElementsTogether = "true"
None.gif            canCombineFormsInDeck = "true"
None.gif            canRenderMixedSelects = "true"
None.gif            canRenderPostBackCards = "true"
None.gif            canRenderSetvarZeroWithMultiSelectionList = "true"
None.gif            supportsImageSubmit = "true"
None.gif            supportsSelectMultiple = "true"
None.gif            requiresHtmlAdaptiveErrorReporting = "false"
None.gif            requiresContentTypeMetaTag = "false"
None.gif            requiresDBCSCharacter = "false"
None.gif            requiresOutputOptimization = "false"
None.gif            supportsAccesskeyAttribute = "false"
None.gif            supportsInputIStyle = "false"
None.gif            supportsInputMode = "false"
None.gif            supportsIModeSymbols = "false"
None.gif            supportsJPhoneSymbols = "false"
None.gif            supportsJPhoneMultiMediaAttributes = "false"
None.gif            maximumRenderedPageSize = "2000"
None.gif            requiresSpecialViewStateEncoding = "false"
None.gif            requiresNoBreakInFormatting = "false"
None.gif            requiresLeadingPageBreak = "false"
None.gif            supportsQueryStringInFormAction = "true"
None.gif            supportsCacheControlMetaTag = "true"
None.gif            supportsUncheck = "true"
None.gif            canRenderEmptySelects = "true"
None.gif            supportsRedirectWithCookie = "true"
None.gif            supportsEmptyStringInCookieValue = "true"
None.gif            cachesAllResponsesWithExpires = "false"
None.gif            requiresNoSoftkeyLabels = "false"
None.gif            defaultSubmitButtonLimit = "1"
None.gif            
None.gif            supportsBold = "false"
None.gif            supportsItalic = "false"
None.gif            supportsFontSize = "false"
None.gif            supportsFontName = "false"
None.gif            supportsFontColor = "true"
None.gif            supportsBodyColor = "true"
None.gif            supportsDivAlign = "true"
None.gif            supportsDivNoWrap = "false"
None.gif            supportsCharacterEntityEncoding = "true"
None.gif
None.gif            isMobileDevice="false"
None.gif
</browserCaps>

具體屬性的意思可以考試MSDN:設備功能列表


2.鏈接:
 在同一個aspx文件,使用Link控件的,#FORM來切換不同Form時在 OPenWave 5.0測試會出現錯誤!
建議在程序通過ActiveForm來做
3.亂碼:
    如果在開發過程出現亂碼,通過修改Web.Config
    <globalization
            requestEncoding="gb2312"
            responseEncoding="gb2312"
    />
4.取消移動設備緩存:
None.gif  Page.Response.Expires = -1;
None.gif   Response.CacheControl 
= "Public";

5.重定向
重定向通過
RedirectToMobilePage函數
不過使用過程中可能會出現一些問題
建議用Link控件來代替

   一些開發資料:
https://msdn.microsoft.com/mobility/downloads/sdks/default.aspx

https://www.dotnet247.com/247reference/__site/72

https://www.wapease.com

https://www.sp-forum.org/download/list.asp?type=14

https://www2.chn.monternet.com:8080/devdownload/DevWapSimulator.jsp


最後更新:2017-04-02 00:06:41

  上一篇:go 申訴
  下一篇:go 關於引用的幾條理解與規則