目次＞第4章 Appendix?＞　4.1.1 トラブルシューティング

# 4.1.1 トラブルシューティング

## 概要

本節では、Client FWを利用したアプリケーション構築時に、よく起こる問題とその対処法を説明する。

## 環境構築時の注意点

### 1. IISと.NET Frameworkのインストール順について

- 問題
  - IISでASP.NETが動作しない。
- 原因
  - IISと.NET Frameworkのインストール順が適切でない場合に、IIS マッピングが正しく行われない。
    .NET Framework → IISの順にインストールしたことにより、IISにASP.NETが登録されていない。
    ※ IIS→.NET Frameworkの順にインストールした場合、本事象は発生しない。
- 対処
  - .NET Frameworkが提供するASP.NET IIS 登録ツール (Aspnet_regiis.exe)を実行して、IIS マッピングを修復する。

Aspnet_regiis.exeを利用したIIS マッピングを修復する手順を以下に示す。

- 手順
  1. スタートメニューの[プログラム]-[アクセサリ]から、コマンドプロンプトを起動する。
  2. コマンドプロンプトで、ASP.NET IIS 登録ツールが格納されたフォルダへ移動する。

         > cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

  3. コマンドプロンプトで、aspnet_regiisコマンドを実行する。（引数に「-i」を指定する。）

         > aspnet_regiis -i

  4. aspnet_regiisコマンドが正常終了すると、以下のメッセージが表示される。

         ASP.NET (2.0.50727) のインストールを開始します。
         ................
         ASP.NET (2.0.50727) のインストールが完了しました。

##### 備考

ASP.NET IIS 登録ツール (Aspnet_regiis.exe)の詳細は、http://msdn2.microsoft.com/ja-jp/library/k6h9cz8h(VS.80).aspxを参照のこと。

## エラーメッセージと対処法

設定ファイルやコンポーネントのプロパティの設定ミスにより、実行時に発生する例外のメッセージとその対処法を説明する。

表4.1.1-1 エラーメッセージ一覧

エラー分類 | エラーメッセージ
画面遷移時に発生するエラー１ | 画面遷移設定ファイルに画面ID "AAAAA" に対する画面クラスの型名が設定されていません。
画面遷移時に発生するエラー２ | 画面遷移設定ファイルの画面ID "AAAAA" の画面クラス "BBBBB" が見つかりません。
業務処理呼び出し時に発生するエラー１ | EventContext コンポーネントのプロパティ "ConvertId" を設定した場合、プロパティ "View" が設定されている必要があります。
| EventContext コンポーネントのプロパティ "ValidationFilePath" を設定した場合、プロパティ "View" が設定されている必要があります。
業務処理呼び出し時に発生するエラー２ | ビジネスロジック設定ファイルにビジネスロジック名 "AAAAA" に対するビジネスロジッククラスの型名が設定されていません。
業務処理呼び出し時に発生するエラー３ | ビジネスロジック入力データセット "AAAAA" に DtoFile テーブルがありません。 ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムに アップロードするファイルのパスを格納してください。
| ビジネスロジック入力データセット "AAAAA" の DtoFile テーブルに FilePath カラムがありません。 ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムに アップロードするファイルのパスを格納してください。
業務処理呼び出し時に発生するエラー４ | ビジネスロジック入力データセット "AAAAA" の DtoFile テーブルにレコードがありません。 ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムに アップロードするファイルのパスを格納してください。
データセット変換時に発生するエラー１ | データセット変換設定ファイルにコンバートID "AAAAA" に対するデータセット変換情報が設定されていません。
データセット変換時に発生するエラー２ | コンバートID "AAAAA" のデータセット変換時に DataTable "BBBBB" が DataSet "CCCCC" に見つかりませんでした。
| コンバートID "AAAAA" のデータセット変換時に DataColumn "BBBBB" が DataSet "CCCCC"の DataTable "DDDDD" に見つかりませんでした。
入力値検証プロバイダによる検証実行時に発生するエラー１ | 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は、コントロールのパブリックプロパティではありません。
| 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は書き込み可能なプロパティではありません。
| 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は、読み取り可能なプロパティではありません。
入力値検証プロバイダによる検証実行時に発生するエラー２ | 入力値検証対象コントロール "AAAAA" の プロパティ "BBBBB" が DataSet とバインドしていない、 もしくは、バインドしている DataSet の DataTable にレコードがありません。
入力値検証プロバイダによる検証実行時に発生するエラー３ | 入力値検証設定ファイルにルール "AAAAA" が設定されていません。

### 画面遷移時に発生するエラー１

- エラーメッセージ
  - 画面遷移設定ファイルに画面ID "AAAAA" に対する画面クラスの型名が設定されていません。
- 原因
  - FormForwarderコンポーネントのViewIdプロパティに設定した画面IDが、画面遷移設定ファイルに定義されていない。
    - FormForwarderコンポーネントのViewIdプロパティの設定ミス。
    - 画面遷移設定ファイルの設定ミス。
- 対処
  1. FormForwarderコンポーネントのViewIdプロパティに設定した値（エラーメッセージに表示された画面ID "AAAAA"）が正しいことを確認する。
  2. エラーメッセージに表示された画面ID "AAAAA"と画面クラスの型を、画面遷移設定ファイルに定義する。

### 画面遷移時に発生するエラー２

- エラーメッセージ
  - 画面遷移設定ファイルの画面ID "AAAAA" の画面クラス "BBBBB" が見つかりません。
- 原因
  - 画面遷移設定ファイルに定義した画面クラスが存在しない。
    - 画面遷移設定ファイルの設定ミス。
- 対処
  1. エラーメッセージに表示された画面ID "AAAAA"をもとに画面遷移設定ファイルを参照し、view要素のtype属性値（画面クラス）が正しいことを確認する。

### 業務処理呼び出し時に発生するエラー１

- エラーメッセージ
  - EventContext コンポーネントのプロパティ "ConvertId" を設定した場合、プロパティ "View" が設定されている必要があります。
  - EventContext コンポーネントのプロパティ "ValidationFilePath" を設定した場合、プロパティ "View" が設定されている必要があります。
- 原因
  - イベント処理時にデータセット変換や入力値検証を行うには、EventContextコンポーネントのViewプロパティに画面データセットを設定しなければいけない。
- 対処
  1. EventContextコンポーネントのViewプロパティに画面データセットを設定する。

### 業務処理呼び出し時に発生するエラー２

- エラーメッセージ
  - ビジネスロジック設定ファイルにビジネスロジック名 "AAAAA" に対するビジネスロジッククラスの型名が設定されていません。
- 原因
  - EventContextコンポーネントのBLogicNameプロパティに設定したビジネスロジック名が、ビジネスロジック設定ファイルに定義されていない。
    - EventContextコンポーネントのBLogicNameプロパティの設定ミス。
    - ビジネスロジック設定ファイルの設定ミス。
- 対処
  1. EventContextコンポーネントのBLogicNameプロパティに設定した値（エラーメッセージに表示されたビジネスロジック名 "AAAAA"）が正しいことを確認する。
  2. エラーメッセージに表示されたビジネスロジック名 "AAAAA"とビジネスロジッククラスの型を、ビジネスロジック設定ファイルに定義する。

### 業務処理呼び出し時に発生するエラー３

- エラーメッセージ
  - ビジネスロジック入力データセット "AAAAA" に DtoFile テーブルがありません。ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムにアップロードするファイルのパスを格納してください。
  - ビジネスロジック入力データセット "AAAAA" の DtoFile テーブルに FilePath カラムがありません。ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムにアップロードするファイルのパスを格納してください。
- 原因
  - ファイルアップロードを行うビジネスロジックの入力データセットの型が間違っている。
    - 画面データセット、もしくは、ビジネスロジック入力データセットの作成ミス。
    - EventContextコンポーネントのParamDataプロパティの設定ミス。
- 対処
  1. EventContextコンポーネントのParamDataプロパティに設定したビジネスロジック入力データセットを表す文字列が正しいことを確認する。
  2. 1で確認したデータセットが、以下のルールに従っていることを確認する。
     ParamDataプロパティが設定されている場合・・・ビジネスロジック入力データセットを確認する。
     ParamDataプロパティが設定されていない場合・・・画面データセットを確認する。（フレームワークがビジネスロジック入力データセットとして、画面データセットと同じ型のデータセットを自動生成するため。）

> アップロードを行うビジネスロジックの入力データセット作成・利用時のルール

>     ・ ビジネスロジック入力データセットに、DtoFileテーブルが存在すること
>     ・ DtoFileテーブルに、FilePathカラムが存在すること
>     ・ DtoFileテーブルのFilePathカラムに、アップロードするファイルパスが格納されていること
>     ・ DtoFileテーブルの1行目に、アップロードするファイルパスが格納されていること

### 業務処理呼び出し時に発生するエラー４

- エラーメッセージ
  - ビジネスロジック入力データセット "AAAAA" の DtoFile テーブルにレコードがありません。ファイルアップロードを行うビジネスロジックを利用する場合、ビジネスロジック入力データセットの DtoFile テーブルの FilePath カラムにアップロードするファイルのパスを格納してください。
- 原因
  - ファイルアップロードを行うビジネスロジックの入力データセットに、ファイルパスが格納されていない。
    - 画面と画面データセットがバインドされていない。
    - 画面データセットが初期化されていない。
    - EventContextコンポーネントのConvertIdプロパティの設定ミス。
    - データセット変換設定ファイルの設定ミス。
- 対処
  1. 画面と画面データセットが正しくバインドしていることを確認する。
  2. 画面Loadイベントで、画面データセットの初期化が正しく行われていることを確認する。
  3. EventContextコンポーネントのConvertIdプロパティに設定した値を確認する。
  4. 3で確認したコンバートIDをもとにデータセット変換設定ファイルを参照し、データセット変換情報が正しく設定されていることを確認する。

### データセット変換時に発生するエラー１

- エラーメッセージ
  - データセット変換設定ファイルにコンバートID "AAAAA" に対するデータセット変換情報が設定されていません。
- 原因
  - EventContextコンポーネントのConvertIdプロパティに設定したコンバートIDが、データセット変換設定ファイルに定義されていない。
    - EventContextコンポーネントのConvertIdプロパティの設定ミス。
    - データセット変換設定ファイルの設定ミス。
- 対処
  1. EventContextコンポーネントのConvertIdプロパティに設定した値（エラーメッセージに表示されたコンバートID "AAAAA"）が正しいことを確認する。
  2. エラーメッセージに表示されたコンバートID "AAAAA"とデータセット変換情報を、データセット変換設定ファイルに定義する。

### データセット変換時に発生するエラー２

- エラーメッセージ
  - コンバートID "AAAAA" のデータセット変換時に DataTable "BBBBB" が DataSet "CCCCC" に見つかりませんでした。
  - コンバートID "AAAAA" のデータセット変換時に DataColumn "BBBBB" が DataSet "CCCCC"の DataTable "DDDDD" に見つかりませんでした。
- 原因
  - データセット変換設定ファイルの変換情報に設定したテーブル、もしくは、カラムが、データセットに存在しない。
    - EventContextコンポーネントのConvertIdプロパティの設定ミス。
    - データセット変換設定ファイルの設定ミス。
    - 画面データセット、もしくは、ビジネスロジック入力・出力データセットの作成ミス。
- 対処
  1. EventContextコンポーネントのConvertIdプロパティに設定した値（エラーメッセージに表示されたコンバートID "AAAAA"）が正しいことを確認する。
  2. エラーメッセージに表示されたコンバートID "AAAAA"のデータセット変換情報が、データセット変換設定ファイルに正しく設定されていることを確認する。
  3. 画面データセットが設計通り作成されていること確認する。
     （ビジネスロジック入力・出力データセットを作成した場合は、同様のチェックを行う。）

### 入力値検証プロバイダによる検証実行時に発生するエラー１

- エラーメッセージ
  - 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は、コントロールのパブリックプロパティではありません。
  - 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は書き込み可能なプロパティではありません。
  - 入力値検証対象コントロール "AAAAA" で PropertyName 拡張プロパティに設定した "BBBBB" は、読み取り可能なプロパティではありません。
- 原因
  - 入力値検証対象コントロールのPropertyName拡張プロパティの設定ミス。
- 対処
  1. エラーメッセージに表示されたコントロールのPropertyNameプロパティが、正しく設定されていることを確認する。
     PropertyNameには、"Text" , "Value"などの入力値検証対象となるプロパティ名を設定する。

### 入力値検証プロバイダによる検証実行時に発生するエラー２

- エラーメッセージ
  - 入力値検証対象コントロール "AAAAA" の プロパティ "BBBBB" が DataSet とバインドしていない、もしくは、バインドしている DataSet の DataTable にレコードがありません。
- 原因
  - 画面が画面データセットとバインドしていない。
  - 画面データセットが初期化されていない。
- 対処
  1. デザイナで、画面が画面データセットとバインドしていることを確認する。
  2. 画面Loadイベントで、画面データセットの初期化が正しく行われていることを確認する。

### 入力値検証プロバイダによる検証実行時に発生するエラー３

- エラーメッセージ
  - 入力値検証設定ファイルにルール "AAAAA" が設定されていません。
- 原因
  - 入力値検証設定ファイルに、検証ルールが定義されていない。
    - 入力値検証対象コントロールのPropertyName拡張プロパティの設定ミス。
    - 入力値検証設定ファイルの設定ミス。
- 対処
  1. 入力値検証対象コントロールのPropertyName拡張プロパティに設定した値（エラーメッセージに表示されたルール "AAAAA"）が正しいことを確認する。
  2. エラーメッセージに表示されたルール "AAAAA"を、入力値検証設定ファイルに定義する。

次節：4.1.2 未定