更新 : 2007 年 11 月
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 には、Web アプリケーションのデバッグに使用できる、トレースと呼ばれる使いやすい機能が用意されています。ASP.NET には、ページレベル トレースとアプリケーションレベル トレースの 2 つのレベルのトレースがあります。ページレベル トレースでは、HTML コードによるトレース情報が各トレース ページに追加されます。アプリケーションレベル トレースでは、アプリケーション内に特別にマップされた URL (Trace.axd) をとおしてトレース情報が提供されます。
ASP.NET モバイル アプリケーションでページレベル トレースを使用すると、レンダリングに追加された HTML コードによって、モバイル デバイスに出力がレンダリングされない可能性があります。ASP.NET モバイル Web アプリケーションの場合は、代わりにアプリケーションレベル トレースを使用して、デスクトップ Web ブラウザからトレースの出力を調べる必要があります。
ASP.NET のトレース機能の詳細については、「ASP.NET トレースの概要」を参照してください。
セッション状態と Cookie
ASP.NET には、要求間で状態を簡単に保持できる豊富なセッション管理機能があります。通常、ASP.NET のセッション状態機能は、ブラウザ上で Cookie を使用しますが、Cookie なしでも動作するように構成できます。
ASP.NET では、Session を使用して、複数の要求にわたるユーザー セッションに関する情報を保存できます。ASP.NET における Session 管理はスケーラビリティと堅牢性を備えているため、複数の Web ファームにわたって使用することもできます。既定では、ASP.NET の Session はクライアント側の Cookie を使用して、クライアントのコンピュータに識別子を保存します。この識別子を使用すると、サーバーとのやり取りを伴うセッションを特定することができます。また、ASP.NET の Session は Cookie なしのセッション モードもサポートしています。このモードでは、セッション識別子を含む新しい URL にクライアントを最初にリダイレクトします。次に、セッション識別子が URL から自動的に解析されます。
ASP.NET モバイル Web アプリケーションを記述する場合は、Cookie をサポートしないモバイル デバイスやワイヤレス ゲートウェイがあることに注意してください。このようなデバイスに対するサポートを追加するには、クッキーレス セッションを使用するようにアプリケーションを構成する必要があります。
ASP.NET のセッション管理機能の詳細については、「ASP.NET の状態管理の概要」を参照してください。
セッション状態を使用する場合の考慮点
セッション状態管理を使用する ASP.NET モバイル Web アプリケーションを記述する場合は、次の点を考慮してください。
モバイル Web フォーム ページ上での System.Web.UI.WebControls 名前空間の ASP.NET コントロールの使用はサポートされていません。@ Page ディレクティブの EnableSessionState 属性を false に設定すると、モバイル Web フォーム ページで System.Web.UI.MobileControls 名前空間のモバイル Web コントロールを使用できます。一方、EnableSessionState が false に設定された System.Web.UI.WebControls 名前空間の ASP.NET コントロールを使用するモバイル Web フォーム ページは、コンパイル時のエラーが発生する可能性があります。
モバイル デバイスやゲートウェイの中には、Cookie をサポートしないものがあります。このようなデバイスで ASP.NET モバイル Web フォーム ページを実行できるようにするには、sessionState 要素の cookieless 属性を true に設定します。
モバイル デバイスによっては、クッキーレス セッションを利用したテクニックを通してリダイレクトされてから、相対 URL を処理する場合に問題が発生します。
たとえば、Openwave ブラウザで https://localhost/a.aspx にある .aspx ファイルを開くと、この Web サイトがブラウザを /12345678/a.apsx にリダイレクトしている場合、このブラウザは、引き続き現在のパスがルートであると見なします。ブラウザは、b.aspx への次の相対参照を /b.aspx として要求します。
この解決策としては、リダイレクト後のレンダリング時に相対 URL を使用するのではなく、/12345678/a.aspx のようにルートの URL をページに含めることです。組み込みの ASP.NET モバイル コントロールは自動的にこの動作をしますが、新しく記述したコントロールやアダプタには、リダイレクト後のレンダリングを処理するコードを含める必要があります。MobilePage およびアダプタの基本クラスには、モバイル コントロール開発者がルートの URL を記述するのに役立つ MakePathAbsolute などのメソッドがあります。
リダイレクトの使用
デバイスやブラウザによっては、現在 HTTP リダイレクトに応答して完全修飾の URL を要求します。Machine.config ファイルまたは Web.config ファイル (アプリケーション レベル) の System.Web セクションにある httpRuntime 要素の useFullQualifiedRedirectUrl 属性を true に設定してください。詳細については、「ASP.NET モバイル Web ページへのリダイレクト」を参照してください。
構文に関する問題
ASP.NET で有効な構文 (<%= など) は、ASP.NET モバイル コントロールでは無効です。データ バインディング メカニズムで置き換える必要があります。
データ バインディングの式は <%# と %> で区切る必要があります。データ連結の式の使用例を以下に示します。
<%# binding expression code goes here %>
参照
概念
ASP.NET モバイル Web ページにおけるアダプティブ エラー通知の管理