/// <summary>削除処理</summary> async private void button9_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:アクションタイプ string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; // Soap & Bean の個別WebメソッドのWeb参照 SbServiceReference.ServiceForSbSoapClient client = new SbServiceReference.ServiceForSbSoapClient(); // 非同期呼出しを行う SbServiceReference.DeleteResponse response = await client.DeleteAsync(context, actionType, int.Parse(this.textBox1.Text)); if (response.Body.DeleteResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.DeleteResult); this.labelMessage.Text = response.Body.DeleteResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) this.labelMessage.Text = response.Body.returnValue + "件削除"; } }
/// <summary>参照処理</summary> /// <remarks> /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化 /// (結果表示にだけ匿名デリゲードを使用するパターン) /// </remarks> async private void button6_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:アクションタイプ string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; // Soap & Bean の個別WebメソッドのWeb参照 SbServiceReference.ServiceForSbSoapClient client = new SbServiceReference.ServiceForSbSoapClient(); // 非同期呼出しを行う SbServiceReference.SelectResponse response = await client.SelectAsync(context, actionType, int.Parse(this.textBox1.Text)); if (response.Body.SelectResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.SelectResult); this.labelMessage.Text = response.Body.SelectResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) // データバインド(ToDataSourceでは、削除行を除いたリストを返す) SbServiceReference.Shipper shipper = response.Body.returnValue; this.textBox2.Text = shipper.CompanyName; this.textBox3.Text = shipper.Phone; } }
/// <summary>一覧取得(動的sql)</summary> async private void button5_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:アクションタイプ string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; // Soap & Bean の個別WebメソッドのWeb参照 SbServiceReference.ServiceForSbSoapClient client = new SbServiceReference.ServiceForSbSoapClient(); // 非同期呼出しを行う SbServiceReference.SelectAll_DSQLResponse response = await client.SelectAll_DSQLAsync(context, actionType, ((ComboBoxItem)this.ddlOrderColumn.SelectedItem).Value, ((ComboBoxItem)this.ddlOrderSequence.SelectedItem).Value); if (response.Body.SelectAll_DSQLResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.SelectAll_DSQLResult); this.labelMessage.Text = response.Body.SelectAll_DSQLResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) // データバインド(ToDataSourceでは、削除行を除いたリストを返す) this.ListView1.ItemsSource = response.Body.returnValue; } }
/// <summary>更新処理</summary> async private void button8_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:共通部 MuServiceReference.ArrayOfString param = new MuServiceReference.ArrayOfString(); // 共通部を生成 string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; param.Add(this.Name); // 画面名 param.Add(((Button)sender).Name); // ボタン名 param.Add("Update"); // メソッド名 param.Add(actionType); // アクションタイプ // 引数3:汎用DTOデータ部 // 引数のDTTables DTTables dtts = new DTTables(); DTTable dtt = new DTTable("param"); DTRow dtrow = null; dtt.Cols.Add(new DTColumn("ShipperID", DTType.String)); dtt.Cols.Add(new DTColumn("CompanyName", DTType.String)); dtt.Cols.Add(new DTColumn("Phone", DTType.String)); dtrow = dtt.Rows.AddNew(); dtrow["ShipperID"] = this.textBox1.Text; dtrow["CompanyName"] = this.textBox2.Text; dtrow["Phone"] = this.textBox3.Text; dtts.Add(dtt); // SOAP汎用Webメソッドは通常のWeb参照を用いる。 MuServiceReference.ServiceForMuSoapClient client = new MuServiceReference.ServiceForMuSoapClient(); // 非同期呼出しを行う MuServiceReference.CallResponse response = await client.CallAsync(context, "muWebService", param, DTTables.DTTablesToString(dtts)); if (response.Body.CallResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.CallResult); MessageDialog dialog = new MessageDialog("以下のエラーが発生しました\r\nメッセージ : " + response.Body.CallResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information); await dialog.ShowAsync(); } else { // 結果(正常系) this.labelMessage.Text = response.Body.returnValue + "件更新"; } }
/// <summary>一覧取得(動的sql)</summary> async private void button5_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:共通部 MuServiceReference.ArrayOfString param = new MuServiceReference.ArrayOfString(); // 共通部を生成 string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; param.Add(this.Name); // 画面名 param.Add(((Button)sender).Name); // ボタン名 param.Add("SelectAll_DSQL"); // メソッド名 param.Add(actionType); // アクションタイプ // 引数3:汎用DTOデータ部 // 引数のDTTables DTTables dtts = new DTTables(); DTTable dtt = new DTTable("param"); DTRow dtrow = null; dtt.Cols.Add(new DTColumn("OrderColumn", DTType.String)); dtt.Cols.Add(new DTColumn("OrderSequence", DTType.String)); dtrow = dtt.Rows.AddNew(); dtrow["OrderColumn"] = ((ComboBoxItem)this.ddlOrderColumn.SelectedItem).Value; dtrow["OrderSequence"] = ((ComboBoxItem)this.ddlOrderSequence.SelectedItem).Value; dtts.Add(dtt); // SOAP汎用Webメソッドは通常のWeb参照を用いる。 MuServiceReference.ServiceForMuSoapClient client = new MuServiceReference.ServiceForMuSoapClient(); // 非同期呼出しを行う MuServiceReference.CallResponse response = await client.CallAsync(context, "muWebService", param, DTTables.DTTablesToString(dtts)); if (response.Body.CallResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.CallResult); MessageDialog dialog = new MessageDialog("以下のエラーが発生しました\r\nメッセージ : " + response.Body.CallResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information); await dialog.ShowAsync(); } else { // 結果(正常系) // データバインド(ToDataSourceでは、削除行を除いたリストを返す) this.ListView1.ItemsSource = DTTables.StringToDTTables(response.Body.returnValue)[0].Rows.ToDataSource(); } }
/// <summary>呼出しの完了後イベント(削除処理)</summary> void client_Delete_CallCompleted(object sender, MuServiceReference.CallCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) this.labelMessage.Text = e.returnValue + "件削除"; } }
/// <summary>呼出しの完了後イベント(件数取得)</summary> void client_SelectCount_CallCompleted(object sender, SbServiceReference.SelectCountCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) this.labelMessage.Text = e.returnValue.ToString() + "件のデータがあります"; } }
/// <summary>呼出しの完了後イベント(一覧取得(動的sql))</summary> void client_SelectAll_DSQL_CallCompleted(object sender, MuServiceReference.CallCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) // データバインド(ToDataSourceでは、削除行を除いたリストを返す) this.dataGrid1.ItemsSource = DTTables.StringToDTTables(e.returnValue)[0].Rows.ToDataSource(); } }
/// <summary>呼出しの完了後イベント(参照処理)</summary> void client_Select_CallCompleted(object sender, SbServiceReference.SelectCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) this.textBox2.Text = e.returnValue.CompanyName; this.textBox3.Text = e.returnValue.Phone; } }
/// <summary>呼出しの完了後イベント(一覧取得(動的sql))</summary> void client_SelectAll_DSQL_CallCompleted(object sender, SbServiceReference.SelectAll_DSQLCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) // データバインド this.dataGrid1.ItemsSource = e.returnValue; } }
/// <summary>呼出しの完了後イベント(参照処理)</summary> void client_Select_CallCompleted(object sender, MuServiceReference.CallCompletedEventArgs e) { if (e.Result != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(e.Result); this.labelMessage.Text = e.Result + " , " + e.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information; } else { // 結果(正常系) DTRow dtrow = DTTables.StringToDTTables(e.returnValue)[0].Rows[0]; this.textBox2.Text = dtrow["CompanyName"].ToString(); this.textBox3.Text = dtrow["Phone"].ToString(); } }
/// <summary>参照処理</summary> /// <remarks> /// 非同期フレームワークを使用してB層の呼び出し処理を非同期化 /// (結果表示にだけ匿名デリゲードを使用するパターン) /// </remarks> async private void button6_Click(object sender, RoutedEventArgs e) { // 引数1:コンテキスト string context = "User1"; // 引数2:共通部 MuServiceReference.ArrayOfString param = new MuServiceReference.ArrayOfString(); // 共通部を生成 string actionType = ((ComboBoxItem)this.ddlDap.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode1.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlMode2.SelectedItem).Value + "%" + ((ComboBoxItem)this.ddlExRollback.SelectedItem).Value; param.Add(this.Name); // 画面名 param.Add(((Button)sender).Name); // ボタン名 param.Add("Select"); // メソッド名 param.Add(actionType); // アクションタイプ // 引数3:汎用DTOデータ部 // DTOは使わない。 string shipperID = this.textBox1.Text; // SOAP汎用Webメソッドは通常のWeb参照を用いる。 MuServiceReference.ServiceForMuSoapClient client = new MuServiceReference.ServiceForMuSoapClient(); // 非同期呼出しを行う MuServiceReference.CallResponse response = await client.CallAsync(context, "muWebService", param, shipperID); if (response.Body.CallResult != "") { // 例外発生時 WSErrorInfo wse = new WSErrorInfo(response.Body.CallResult); MessageDialog dialog = new MessageDialog("以下のエラーが発生しました\r\nメッセージ : " + response.Body.CallResult + " , " + response.Body.returnValue + " , " + wse.MessageID + " , " + wse.Message + " , " + wse.Information); await dialog.ShowAsync(); } else { // 結果(正常系) // データバインド(ToDataSourceでは、削除行を除いたリストを返す) DTRow dtrow = DTTables.StringToDTTables(response.Body.returnValue)[0].Rows[0]; this.textBox2.Text = dtrow["CompanyName"].ToString(); this.textBox3.Text = dtrow["Phone"].ToString(); } }
/// <summary> /// WCFの.NETオブジェクトのバイナリ転送用Soap Webメソッド /// </summary> /// <param name="serviceName">サービス名</param> /// <param name="contextObject">コンテキスト</param> /// <param name="parameterValueObject">引数</param> /// <param name="returnValueObject">戻り値</param> /// <returns>返すべきエラーの情報</returns> /// <remarks>値は全て.NETオブジェクトをバイナリシリアライズしたバイト配列データ</remarks> public byte[] DotNETOnlineWS( string serviceName, ref byte[] contextObject, byte[] parameterValueObject, out byte[] returnValueObject) { // ステータス string status = "-"; // 初期化のため returnValueObject = null; #region 呼出し制御関係の変数 // アセンブリ名 string assemblyName = ""; // クラス名 string className = ""; #endregion #region 引数・戻り値関係の変数 // コンテキスト情報 object context; // 2009/09/29-この行 // 引数・戻り値の.NETオブジェクト BaseParameterValue parameterValue = null; BaseReturnValue returnValue = null; // エラー情報(クライアント側で復元するため) WSErrorInfo wsErrorInfo = new WSErrorInfo(); // エラー情報(ログ出力用) string errorType = ""; // 2009/09/15-この行 string errorMessageID = ""; string errorMessage = ""; string errorToString = ""; #endregion try { // 開始ログの出力 LogIF.InfoLog("SERVICE-IF", FxLiteral.SIF_STATUS_START); #region 前解決 // ★ status = FxLiteral.SIF_STATUS_NAME_SERVICE; // 名前解決(インプロセス) WCFHTTPSvcForFx.IPR_NS.NameResolution(serviceName, out assemblyName, out className); #endregion #region 引数のデシリアライズ // ★ status = FxLiteral.SIF_STATUS_DESERIALIZE; // コンテキストクラスの.NETオブジェクト化 context = BinarySerialize.BytesToObject(contextObject); // 2009/09/29-この行 // ※ コンテキストの利用方法は任意だが、サービスインターフェイス上での利用に止める。 // 引数クラスの.NETオブジェクト化 parameterValue = (BaseParameterValue)BinarySerialize.BytesToObject(parameterValueObject); // 引数クラスをパラメタ セットに格納 object[] paramSet = new object[] { parameterValue, DbEnum.IsolationLevelEnum.User }; #endregion #region 認証処理のUOC // ★ status = FxLiteral.SIF_STATUS_AUTHENTICATION; string access_token = (string)context; if (!string.IsNullOrEmpty(access_token)) { string sub = ""; List <string> roles = null; List <string> scopes = null; JObject jobj = null; if (JwtToken.Verify(access_token, out sub, out roles, out scopes, out jobj)) { // 認証成功 Debug.WriteLine("認証成功"); } else { // 認証失敗(認証必須ならエラーにする。 } } else { // 認証失敗(認証必須ならエラーにする。 } //contextObject = BinarySerialize.ObjectToBytes(hogehoge); // 更新可能だが...。 #endregion #region B層・D層呼出し // ★ status = FxLiteral.SIF_STATUS_INVOKE; // #17-start try { // B層・D層呼出し //returnValue = (BaseReturnValue)Latebind.InvokeMethod( // AppDomain.CurrentDomain.BaseDirectory + "\\bin\\" + assemblyName + ".dll", // className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet); returnValue = (BaseReturnValue)Latebind.InvokeMethod( assemblyName, className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet); } catch (System.Reflection.TargetInvocationException rtEx) { //// InnerExceptionを投げなおす。 //throw rtEx.InnerException; // スタックトレースを保って InnerException を throw ExceptionDispatchInfo.Capture(rtEx.InnerException).Throw(); } // #17-end #endregion #region 戻り値のシリアライズ // ★ status = FxLiteral.SIF_STATUS_SERIALIZE; returnValueObject = BinarySerialize.ObjectToBytes(returnValue); #endregion // ★ status = ""; // 戻り値を返す。 return(null); } catch (BusinessSystemException bsEx) { // システム例外 // エラー情報を設定する。 wsErrorInfo.ErrorType = FxEnum.ErrorType.BusinessSystemException; wsErrorInfo.ErrorMessageID = bsEx.messageID; wsErrorInfo.ErrorMessage = bsEx.Message; // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.BusinessSystemException.ToString(); // 2009/09/15-この行 errorMessageID = bsEx.messageID; errorMessage = bsEx.Message; errorToString = bsEx.ToString(); // エラー情報を戻す。 return(BinarySerialize.ObjectToBytes(wsErrorInfo)); } catch (FrameworkException fxEx) { // フレームワーク例外 // ★ インナーエクセプション情報は消失 // エラー情報を設定する。 wsErrorInfo.ErrorType = FxEnum.ErrorType.FrameworkException; wsErrorInfo.ErrorMessageID = fxEx.messageID; wsErrorInfo.ErrorMessage = fxEx.Message; // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.FrameworkException.ToString(); // 2009/09/15-この行 errorMessageID = fxEx.messageID; errorMessage = fxEx.Message; errorToString = fxEx.ToString(); // エラー情報を戻す。 return(BinarySerialize.ObjectToBytes(wsErrorInfo)); } catch (Exception ex) { // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.ElseException.ToString(); // 2009/09/15-この行 errorMessageID = "-"; errorMessage = ex.Message; errorToString = ex.ToString(); throw; // SoapExceptionになって伝播 } finally { // Sessionステートレス //HttpContext.Current.Session.Clear(); //HttpContext.Current.Session.Abandon(); // 終了ロクの出力 if (status == "") { // 終了ログ出力 LogIF.InfoLog("SERVICE-IF", "正常終了"); } else { // 終了ログ出力 LogIF.ErrorLog("SERVICE-IF", "異常終了" + ":" + status + "\r\n" + "エラー タイプ:" + errorType + "\r\n" // 2009/09/15-この行 + "エラー メッセージID:" + errorMessageID + "\r\n" + "エラー メッセージ:" + errorMessage + "\r\n" + errorToString); } } }
/// <summary> /// ASP.NET Webサービスを使用した /// サービス インターフェイス基盤(.NETオンライン) /// </summary> /// <param name="serviceName">サービス名</param> /// <param name="contextObject">コンテキスト</param> /// <param name="parameterValueObject">引数</param> /// <param name="returnValueObject">戻り値</param> /// <returns>返すべきエラーの情報</returns> /// <remarks>値は全て.NETオブジェクトをバイナリシリアライズしたバイト配列データ</remarks> public byte[] DotNETOnlineWS( string serviceName, ref byte[] contextObject, byte[] parameterValueObject, out byte[] returnValueObject) { // ステータス string status = "-"; // 初期化のため returnValueObject = null; #region 呼出し制御関係の変数 // アセンブリ名 string assemblyName = ""; // クラス名 string className = ""; #endregion #region 引数・戻り値関係の変数 // コンテキスト情報 object context; // 2009/09/29-この行 // 引数・戻り値の.NETオブジェクト BaseParameterValue parameterValue; BaseReturnValue returnValue; // エラー情報(クライアント側で復元するため) WSErrorInfo wsErrorInfo = new WSErrorInfo(); // エラー情報(ログ出力用) string errorType = ""; // 2009/09/15-この行 string errorMessageID = ""; string errorMessage = ""; string errorToString = ""; #endregion try { // 開始ログの出力 LogIF.InfoLog("SERVICE-IF", FxLiteral.SIF_STATUS_START); #region 前解決 // ★ status = FxLiteral.SIF_STATUS_NAME_SERVICE; // 名前解決(インプロセス) WCFHTTPSvcForFx.IPR_NS.NameResolution(serviceName, out assemblyName, out className); #endregion #region 引数のデシリアライズ // ★ status = FxLiteral.SIF_STATUS_DESERIALIZE; // コンテキストクラスの.NETオブジェクト化 context = BinarySerialize.BytesToObject(contextObject); // 2009/09/29-この行 // ※ コンテキストの利用方法は任意だが、サービスインターフェイス上での利用に止める。 // 引数クラスの.NETオブジェクト化 parameterValue = (BaseParameterValue)BinarySerialize.BytesToObject(parameterValueObject); // 引数クラスをパラメタ セットに格納 object[] paramSet = new object[] { parameterValue, DbEnum.IsolationLevelEnum.User }; #endregion #region 認証処理のUOC // ★ status = FxLiteral.SIF_STATUS_AUTHENTICATION; // ★★ コンテキストの情報を使用するなどして // 認証処理をUOCする(必要に応じて)。 //// 認証チケットの復号化 //string[] authTicket = (string[])BinarySerialize.BytesToObject( // CustomEncode.FromBase64String( // SymmetricCryptography.DecryptString( // (string)context, GetConfigParameter.GetConfigValue("private-key"), // EnumSymmetricAlgorithm.TripleDESCryptoServiceProvider))); //// 認証チケットの整合性を確認 //// B層・D層呼出し //// スライディング・タイムアウトの実装、 //// タイムスタンプのチェックと、更新 //returnValue = (BaseReturnValue)Latebind.InvokeMethod( // "xxxx", "yyyy", // FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, // new object[] { new AuthParameterValue("-", "-", "zzzz", "", // ((MyParameterValue)parameterValue).User, authTicket[1]), // DbEnum.IsolationLevelEnum.User }); //if (returnValue.ErrorFlag) //{ // // 認証エラー // throw new BusinessSystemException("xxxx", "認証チケットが不正か、タイムアウトです。"); //} // 持ち回るならCookieにするか、 // contextをrefにするなどとする。 contextObject = BinarySerialize.ObjectToBytes(DateTime.Now); // 更新されたかのテストコード #endregion #region B層・D層呼出し // ★ status = FxLiteral.SIF_STATUS_INVOKE; // #17-start try { // B層・D層呼出し //returnValue = (BaseReturnValue)Latebind.InvokeMethod( // AppDomain.CurrentDomain.BaseDirectory + "\\bin\\" + assemblyName + ".dll", // className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet); returnValue = (BaseReturnValue)Latebind.InvokeMethod( assemblyName, className, FxLiteral.TRANSMISSION_INPROCESS_METHOD_NAME, paramSet); } catch (System.Reflection.TargetInvocationException rtEx) { // InnerExceptionを投げなおす。 throw rtEx.InnerException; } // #17-end #endregion #region 戻り値のシリアライズ // ★ status = FxLiteral.SIF_STATUS_SERIALIZE; returnValueObject = BinarySerialize.ObjectToBytes(returnValue); #endregion // ★ status = ""; // 戻り値を返す。 return(null); } catch (BusinessSystemException bsEx) { // システム例外 // エラー情報を設定する。 wsErrorInfo.ErrorType = FxEnum.ErrorType.BusinessSystemException; wsErrorInfo.ErrorMessageID = bsEx.messageID; wsErrorInfo.ErrorMessage = bsEx.Message; // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.BusinessSystemException.ToString(); // 2009/09/15-この行 errorMessageID = bsEx.messageID; errorMessage = bsEx.Message; errorToString = bsEx.ToString(); // エラー情報を戻す。 return(BinarySerialize.ObjectToBytes(wsErrorInfo)); } catch (FrameworkException fxEx) { // フレームワーク例外 // ★ インナーエクセプション情報は消失 // エラー情報を設定する。 wsErrorInfo.ErrorType = FxEnum.ErrorType.FrameworkException; wsErrorInfo.ErrorMessageID = fxEx.messageID; wsErrorInfo.ErrorMessage = fxEx.Message; // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.FrameworkException.ToString(); // 2009/09/15-この行 errorMessageID = fxEx.messageID; errorMessage = fxEx.Message; errorToString = fxEx.ToString(); // エラー情報を戻す。 return(BinarySerialize.ObjectToBytes(wsErrorInfo)); } catch (Exception ex) { // ログ出力用の情報を保存 errorType = FxEnum.ErrorType.ElseException.ToString(); // 2009/09/15-この行 errorMessageID = "-"; errorMessage = ex.Message; errorToString = ex.ToString(); throw; // SoapExceptionになって伝播 } finally { // Sessionステートレス //HttpContext.Current.Session.Clear(); //HttpContext.Current.Session.Abandon(); // 終了ロクの出力 if (status == "") { // 終了ログ出力 LogIF.InfoLog("SERVICE-IF", "正常終了"); } else { // 終了ログ出力 LogIF.ErrorLog("SERVICE-IF", "異常終了" + ":" + status + "\r\n" + "エラー タイプ:" + errorType + "\r\n" // 2009/09/15-この行 + "エラー メッセージID:" + errorMessageID + "\r\n" + "エラー メッセージ:" + errorMessage + "\r\n" + errorToString + "\r\n"); } } }