【发布时间】:2017-12-30 00:48:12
【问题描述】:
我在控制台应用程序中使用 wcf 服务。我想根据帐号检索帐户信息。当我输入帐号时,它可以正常运行,但我在控制台应用程序中出现以下错误。
: '格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数http://tempuri.org/:AccountBalanceCheekResult 时出错。 InnerException 消息是“反序列化 System.Boolean 类型的对象时出错。值 '' 不能被解析为类型 '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();
}
}
这是我运行应用程序时的屏幕截图。
【问题讨论】:
-
这是一个非常基础的问题。您调用的方法不返回
bool,但您正在检查它是否返回bool。
标签: c# wcf ado.net console-application