.Net開發WAP

.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下載請到這裏下載:
http://www.microsoft.com/downloads/details.aspx?FamilyId=02FA15FE-40D9-4DCE-9BB1-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

但這樣將給您在需要IE調試時帶來很大的不便
下面代碼將能解決IE和模擬器同時高度的問題(同樣將下面代碼加入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"/>
<filter>
<case match="Unknown" with="%{browser}">
preferredRenderingType = "wml11"
preferredRenderingMime = "text/vnd.wap.wml"
preferredImageMime = "image/vnd.wap.wbmp"
type=Unknown
</case>
</filter>
</browserCaps>

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控件來代替

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

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

http://www.wapease.com

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

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

http://www.tech-archive.net/Archive/DotNet/microsoft.public.dotnet.framework.aspnet.mobile/
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章