ASP.NET 1.0 から ASP.NET 2.0 へのアップグレードに関するいくつかの問題の概要
著者:Eve Cole
更新時間:2009-06-30 16:06:42
ここ数日でオリジナルの 1.1 プロジェクトをアップグレードしましたが、いくつかの問題が見つかりました。ここでそれらを要約し、アップグレードする時間がない、またはアップグレードの準備ができている友人に、アップグレード プロセス中の迂回や時間の無駄を避けるために注意を促します。
1. Global.asax ファイルの処理形式が異なり、変換後にエラーが発生します。vs2003 では、Global.asax にコード ポスト ファイルがあり、コード分離ファイルは App_Code ディレクトリに移動されます。アプリケーションを通じて任意の ASP.NET ページにアクセスできます。 「コードビハインド」属性は、ASAX ファイルのディレクティブから削除されます。 vs2005 はコードを Global.asax に直接書き込みます。したがって、変換されたファイルを削除して再度追加し、対応するコードをコピーする必要があります。
2.2.0にはプロジェクトファイルがありません。 1.1 アプリケーションでは、プロジェクト ファイルにはビルド設定、外部アセンブリへの参照、およびプロジェクト内のファイルのリストが含まれています。 2.0 アプリケーションでは、Web プロジェクト ディレクトリ内のすべてのファイルが Web プロジェクトの一部とみなされるため、バージョン設定とファイル リストは必要なくなりました。
3.コード分離モード。
ASP.NET 1.1 では、コード分離モードにより、コンテンツ (test.aspx など) がコード (test.aspx.cs など) から分離されます。コンテンツ ページは、ユーザーおよびデザイナーが生成したコードを含むコード分離ページを継承します。
ASP.NET 2.0 は、部分クラスの使用を通じてコード分離モードを強化し、partial キーワードを使用して単一クラスのコードを 2 つの個別のファイルに分離します。これにより、クラスが複数のファイルにまたがることが可能になります。新しいコード分離モードでは、コンテンツ ページはコンパイルされたクラスを継承します。このクラスは、対応するコード分離ページと、コンテンツ ページで使用されるコントロールのフィールド宣言を定義する自動生成されたスタブ ファイルで構成されます。この変更により、自動生成されたコードがユーザーのコードから分離され、コード分離ページが大幅に小さく、すっきりしました。部分クラス構造により、デザイナーが生成したコードを編集することによって誤ってページが破損するリスクも軽減されます。
エラーが発生した場合は、部分キーワードが存在するかどうかを確認し、存在しない場合は部分キーワードを追加します。
4.文法チェック。 asp.net1.1 プログラムはコンパイル時に aspx、aspcx、およびその他のファイルの構文エラーをチェックしませんが、vs2005 はコンパイル時にプロジェクト内のすべての aspx、aspcx、およびその他のファイルの構文をチェックします。そのため、構文エラーがある場合は、コンパイルが通らない原因となります。
5.コントロール宣言。すべてのコントロールが .aspx ページで宣言されている場合は、コード分離ファイルからすべてのコントロール宣言を削除します。削除しないと、「定義が重複しています」というエラーが報告されます。
6. (C# のみ) コード分割ファイル内の InitialzeComponent 関数からイベント フック コードを .aspx ページに移動します。このアクションは、Page_Init、Page_Load、Page_DataBind、Page_PreRender、Page_Unload、Page_Error、Page_AbortTransaction、Page_CommitTransaction などの自動的に呼び出されるイベントには適用されないことに注意してください。
7. 導入方法 (プリコンパイル済み、フルコンパイル済み、更新可能なサイトなど)。 1.x では、Web アプリケーションはプリコンパイルされ、1 つの大きなアセンブリとしてデプロイされました。コンテンツ ページ (*.aspx) はサーバー上でコンパイルされませんが、サーバー上で編集できます。新しいページ コンパイル モードとディレクトリ構造を使用すると、さまざまな構成を使用して ASP.NET 2.0 アプリケーションを展開できます。 1 つのケースでは、すべての ASPX ページをプリコンパイルし、完全にコンパイルされたアセンブリで構成される Web アプリケーションを展開できます。このモードでは、サーバー上のアプリケーションを簡単に変更することはできません。あるいは、コードをプリコンパイルせずにアプリケーションをデプロイすることもできます。この構成では、アプリケーション内の .aspx ページ、コード分離ファイル、またはその他のコードをサーバー上で直接変更できます。ユーザーがサーバー上のページをリクエストすると、ページは動的にコンパイルされます。
8. .aspx ページのすべての CodeBehind プロパティを CodeFile プロパティに変更します。
CodeBehind: ページに関連付けられたクラスを含むコンパイルされたファイルの名前を指定します。このプロパティは実行時には使用できません。
このプロパティは、分離コード機能を実装するために、以前のバージョンの ASP.NET との互換性のために提供されています。 ASP.NET バージョン 2.0 では、代わりに CodeFile プロパティを使用してソース ファイルの名前を指定し、Inherits プロパティを使用してクラスの完全修飾名を指定する必要があります。
コードファイル
ページによって参照される分離コード ファイルへのパスを指定します。このプロパティは、分離コード ソース ファイルを Web ページに関連付けるために Inherits プロパティとともに使用されます。このプロパティは、コンパイルされたページに対してのみ有効です。
9. すべての独立したコード ファイルと AssemblyInfo.cs を App_Code ディレクトリに移動します。
ただし、変換ウィザードの実行後、一部のコード分離ファイル (*.aspx.cs や *.ascx.vb など) が App_Code ディレクトリに移動されていることがわかる場合があります。これは、コード分割ファイルのコンテンツ ページに不正な分離コード ディレクティブが含まれており、正しく設定されていないことを示します。つまり、変換ウィザードは、コード分割ファイルが実際に特定の .aspx ページにバインドされているかどうかを判断できません。
10. Web サービス ASP.NET 1.x では、Web サービス (.asmx) は、空のヘッダー ページ (.asmx) と実際のメソッドを含むコード分離ファイルに自動的に分割されます。
Asp.net2.0 の場合:
• コード分離クラスを App_Code ディレクトリに移動して、アプリケーション内の任意の ASP.NET ページから自動的にアクセスできるようにします。
• 新しい場所を指すように .asmx ファイルの CodeBehind プロパティを変更します。
(コード分離ファイルはローカル クラスを使用しないため、CodeBehind 属性は引き続き使用されることに注意してください。)
• すべての Default、Friend、および Internal スコープの宣言を Public に変更します。
1.1 から 2.0 へのアップグレード プロセス中にどのような問題が発生しましたか?みんなで一緒に学び、寄り道を避けるために書き留めることができます。