当编写 ASP.NET 移动 Web 应用程序时,您几乎可以使用 ASP.NET 的所有功能。但是,首先要考虑兼容性问题。
错误处理和报告
如果 ASP.NET 应用程序在处理请求时遇到未处理的异常或其他错误,就会生成错误页。异常可能会在请求处理过程中的任何时候发生。例如,它们可能会在读取配置文件 (Web.config),编译页或运行页时发生。
您可以配置应用程序,使其生成默认或自定义的错误页。如果将应用程序配置为生成默认错误页,ASP.NET 将设置响应中的错误代码,并呈现详细描述错误的页。但是,如果将应用程序配置为生成自定义错误页,每个错误请求将被重定向到您为其提供的自定义页。
许多移动设备都无法呈现错误页的详细内容。这些设备通常只显示特定于设备的错误信息或错误代码。针对这种情况,ASP.NET 移动 Web 窗体页会尝试格式化错误页,使其能够在设备上呈现。但是,这一特定于设备的呈现仅限于在运行页时发生的异常。因此,如果您使用的是默认错误页,则应该首先从桌面浏览器中试用移动 Web 窗体页,以检测潜在的配置或编译错误。
如果您计划在 ASP.NET 移动 Web 应用程序中使用自定义错误页,ASP.NET 可以为不同的移动设备相应地格式化错误页(如果您使用移动控件编写了自定义错误页)。
有关 ASP.NET 中的错误页的更多信息,请参见 ErrorPage 属性文档。有关错误管理的更多信息,请参见管理适应性错误报告。
跟踪
ASP.NET 提供了一种叫做“跟踪”的易于使用的功能,可用来调试 Web 应用程序。ASP.NET 提供了两个级别的跟踪:页级别跟踪和应用程序级别跟踪。页级别跟踪以附加到每个被跟踪页的 HTML 代码的形式提供跟踪信息,而应用程序级别的跟踪通过应用程序中的一种特殊映射 URL (Trace.axd) 来提供跟踪信息。
如果您在 ASP.NET 移动 Web 应用程序中使用页级别跟踪,附加到呈现的 HTML 代码可能会防止输出内容在移动设备上呈现。对于 ASP.NET 移动 Web 应用程序,您必须使用应用程序级别的跟踪并从桌面 Web 浏览器中检查跟踪输出。
有关 ASP.NET 的跟踪功能的更多信息,请参见 ASP.NET 跟踪。
会话状态和 Cookie
ASP.NET 提供了丰富的会话管理功能,它们使您能够方便地跨请求管理状态。通常,ASP.NET 会话状态功能会使用浏览器上的 Cookie,但它也可以配置为在不使用 Cookie 的情况下运行。
在 ASP.NET 中,您可以使用 Session 来跨越多个请求保存有关用户会话的信息。ASP.NET 中的会话管理是可伸缩而可靠的,因此您甚至可以跨越网络场使用该功能。默认情况下,ASP.NET Session 使用客户端 Cookie 将标识符存储在客户端计算机上。您可以使用该标识符跨越服务器往返过程查找会话。此外,ASP.NET Session 支持无 Cookie 的会话模式,该模式最初将客户端重定向到包含一个会话标识符的新 URL。然后,会话标识符将自动从 URL 中分析出来。
当编写 ASP.NET 移动 Web 应用程序时,必须牢记某些移动设备和无线网关不支持 Cookie。若要添加对这些设备的支持,必须将应用程序配置为使用无 Cookie 的会话。
有关 ASP.NET 的会话管理功能的更多信息,请参见 Web 窗体状态管理介绍和了解状态管理。
使用会话状态时的注意事项
当编写使用会话状态管理的 ASP.NET 移动 Web 应用程序时,应考虑以下因素:
某些移动设备和网关不支持 Cookie。若要使 ASP.NET 移动 Web 应用程序能够在这些设备上运行,Web 服务器必须将会话管理设置为无 Cookie 模式。
通过无 Cookie 会话管理采用的技术进行重定向后,某些移动设备在处理相对 URL 时存在问题。
例如,如果将一个 Openwave.com 浏览器发送到位于 http://localhost/a.aspx 的 .aspx 文件,而且该 Web 站点将浏览器重定向到 /12345678/a.apsx,浏览器仍会将其当前路径当作根路径。浏览器会将随后对 b.aspx 的相对引用当作 /b.aspx 来请求。
此问题的解决办法是在页上包含带根路径的 URL(如 /12345678/a.aspx),而不是在重定向之后进行呈现时的相对 URL。内置的 ASP.NET 移动控件会自动执行此任务,但任何新编写的控件或适配器必须包括对重定向之后的呈现进行处理的代码。MobilePage 和适配器基类都具有相应的方法来帮助移动控件开发人员编写带根路径的 URL。
使用重定向
作为对 HTTP 重定向的响应,某些设备和浏览器目前需要全限定的 URL。在 Machine.config 文件或 Web.config 文件(应用程序级)的 System.Web 节中设置 useFullyQualifiedRedirectUrl=true。有关更多详细信息,请参见重定向到移动 Web 应用程序。
语法问题
ASP.NET 中的有效语法(例如 <%=)在 ASP.NET 移动控件中无效,必须用数据绑定机制来替换。
数据绑定表达式必须用 <%# 和 %> 来分隔。下面是有关如何使用数据绑定表达式的示例。
<%# binding expression code goes here %>