【转】最近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下载请到这里下载:
http://www.microsoft.com/downloads/details.aspx?FamilyId=02FA15FE-40D9-4DCE-9BB1-4DD61A5B7CCB&displaylang=en
但是,即使驱动更新以后,还是一些设备不能访问:
这时需要强制输出WML:
在web.config
添加下面内容<system.web>下
 <browserCaps>
<browserCaps>
 <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
 <use var="HTTP_USER_AGENT"/>
            <use var="HTTP_USER_AGENT"/>
 preferredRenderingType = "wml11"
                    preferredRenderingType = "wml11"
 preferredRenderingMime = "text/vnd.wap.wml"
                    preferredRenderingMime = "text/vnd.wap.wml"
 preferredImageMime = "image/vnd.wap.wbmp"
                    preferredImageMime = "image/vnd.wap.wbmp"
 </browserCaps>
</browserCaps> 
如果定义相关其它属性可以完整的移动设置属性:
 <browserCaps>
    <browserCaps>
 <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
            <result type="System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
 <use var="HTTP_USER_AGENT"/>
            <use var="HTTP_USER_AGENT"/>

 browser=Unknown
            browser=Unknown
 version=0.0
            version=0.0
 majorversion=0
            majorversion=0
 minorversion=0
            minorversion=0
 frames=false
            frames=false
 tables=false
            tables=false
 cookies=false
            cookies=false
 backgroundsounds=false
            backgroundsounds=false
 vbscript=false
            vbscript=false
 javascript=false
            javascript=false
 javaapplets=false
            javaapplets=false
 activexcontrols=false
            activexcontrols=false
 win16=false
            win16=false
 win32=false
            win32=false
 beta=false
            beta=false
 ak=false
            ak=false
 sk=false
            sk=false
 aol=false
            aol=false
 crawler=false
            crawler=false
 cdf=false
            cdf=false
 gold=false
            gold=false
 authenticodeupdate=false
            authenticodeupdate=false
 tagwriter=System.Web.UI.Html32TextWriter
            tagwriter=System.Web.UI.Html32TextWriter
 ecmascriptversion=0.0
            ecmascriptversion=0.0
 msdomversion=0.0
            msdomversion=0.0
 w3cdomversion=0.0
            w3cdomversion=0.0
 platform=Unknown
            platform=Unknown
 css1=false
            css1=false
 css2=false
            css2=false
 xml=false
            xml=false

 mobileDeviceManufacturer = "Unknown"
            mobileDeviceManufacturer = "Unknown"
 mobileDeviceModel = "Unknown"
            mobileDeviceModel = "Unknown"

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

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

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

 numberOfSoftkeys = "0"
            numberOfSoftkeys = "0"
 maximumSoftkeyLabelLength = "5"
            maximumSoftkeyLabelLength = "5"

 canInitiateVoiceCall = "false"
            canInitiateVoiceCall = "false"

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

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