コンソールアプリケーションでwcfサービスを使用しています。私はアカウント番号に基づいてアカウント情報を取得したい。アカウント番号を入力すると、エラーなしでメソッドにアクセスできますが、コンソールアプリケーションでエラーが発生しました。コンソールアプリケーションで値 ''を型として解析できませんブール
: 'メッセージのデシリアライズ中にフォーマッタが例外をスローしました。パラメータhttp://tempuri.org/:AccountBalanceCheekResultを逆シリアル化しようとしたときにエラーが発生しました。 InnerExceptionメッセージが 'System.Boolean型のオブジェクトを逆シリアル化する際にエラーが発生しました。値 ''は型 'ブール'として解析できません。 '詳細については、InnerExceptionを参照してください。
ここはクラスです。
[DataContract]
public class AccountBalanceRequest : Current_Account_Details
{
string account_number;
[DataMember]
public string Account_Number
{
get { return account_number; }
set { account_number = value; }
}
}
}
ここに実装があり、私はADO.NETコードでエラーが見つかりませんでした。
public AccountBalanceRequest AccountBalanceCheek(AccountBalanceRequest accountNumber)
{
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
conn.Open();
var cmd = new SqlCommand("SELECT * FROM Current_Account_Details WHERE Account_Number = '" + accountNumber.Account_Number + "'", conn);
cmd.CommandType = CommandType.Text;
var reader = cmd.ExecuteReader();
//read the result of the execute command.
while (reader.Read())
{
//assuming that your property is the same as your table schema. refer to your table schema Current_Account_Details
accountNumber.Account_Number = reader["Account_Number"].ToString();
accountNumber.Account_Creation_Date = reader["Account_Creation_Date"].ToString();
accountNumber.Account_Type = reader["Account_Type"].ToString();
accountNumber.Branch_Sort_Code = reader["Branch_Sort_Code"].ToString();
accountNumber.Account_Fees = reader["Account_Fees"].ToString();
accountNumber.Account_Balance = reader["Account_Balance"].ToString();
accountNumber.Over_Draft_Limit = reader["Over_Draft_Limit"].ToString();
}
return accountNumber;
}
}
ここにコンソールウィンドウコードがあります。
public static void Balance()
{
MyService.HalifaxCurrentAccountServiceClient currentAccount = new MyService.HalifaxCurrentAccountServiceClient("NetTcpBinding_IHalifaxCurrentAccountService");
MyService.AccountBalanceRequest cs = new MyService.AccountBalanceRequest();
string AccountNumber;
Console.WriteLine("\nEnter your Account Number--------:");
AccountNumber = Console.ReadLine();
cs.Account_Number = AccountNumber;
// MyService.AccountBalanceRequest cs1 = currentAccount.AccountBalanceCheek(AccountNumber);
if (currentAccount.AccountBalanceCheek(cs))**//Error on this line**
{
Console.WriteLine("Your Account Number is :" + cs.Account_Number);
Console.WriteLine("Your Account Type :" + cs.Account_Balance);
Console.WriteLine("Your Account Account Fee :" + cs.Account_Fee);
Console.WriteLine("Your Account Balance:" + cs.Account_Balance);
Console.WriteLine("Your Account Over Draft Limit :" + cs.Over_Draft_Limit);
Console.Write("--------------------------");
Console.ReadLine();
//Console.Clear();
}
}
ここでは、アプリケーションを実行するときのスクリーンショットを示します。あなたはこれがAccountBalanceCheek()
関数は、しかし、関数のシグネチャは、それがAccountBalanceRequest
タイプではなくブール値を返すことを示唆している、ブール値を返すことを前提としてテスト
if (currentAccount.AccountBalanceCheek(cs))
を持っているあなたのコードで
に
からメソッドの署名を変更します。呼び出すメソッドは 'bool'を返しませんが、' bool'を返すかのようにチェックしています。 – CodingYoshi