C# Wcf Rest服务返回编号转换错误
我正在将Wcf Rest服务消费到Angular JS应用程序中。我试图根据输入字段中的帐号显示单个记录。但当我点击提交按钮显示记录时,我在谷歌浏览器网络点击中发现了以下错误 服务器在处理请求时遇到错误。异常消息是“将nvarchar值“{Account_Number}15”转换为数据类型int”时转换失败。”。有关详细信息,请参阅服务器日志。异常堆栈跟踪为: 并在Post方法操作中返回400个错误请求 这里是界面C# Wcf Rest服务返回编号转换错误,c#,angularjs,rest,wcf,C#,Angularjs,Rest,Wcf,我正在将Wcf Rest服务消费到Angular JS应用程序中。我试图根据输入字段中的帐号显示单个记录。但当我点击提交按钮显示记录时,我在谷歌浏览器网络点击中发现了以下错误 服务器在处理请求时遇到错误。异常消息是“将nvarchar值“{Account_Number}15”转换为数据类型int”时转换失败。”。有关详细信息,请参阅服务器日志。异常堆栈跟踪为: 并在Post方法操作中返回400个错误请求 这里是界面 [OperationContract] [WebInvoke(M
[OperationContract]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/GetAccountDetails/{Account_Number}")]
string GetAccountDetails(string Account_Number);
下面是实现
public string GetAccountDetails(string Account_Number)
{
List<object> customers = new List<object>();
string sql = "SELECT * FROM Current_Account_Holder_Details WHERE Account_Number = @Account_Number";
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["DBCS"].ConnectionString;
using (SqlCommand cmd = new SqlCommand(sql))
{
cmd.Parameters.AddWithValue("@Account_Number", Account_Number);
cmd.Connection = conn;
conn.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
customers.Add(new
{
Tittle = sdr["Tittle"],
Account_Holder_First_Name = sdr["Account_Holder_First_Name"],
Account_Holder_Last_Name = sdr["Account_Holder_Last_Name"],
Account_Holder_DOB = sdr["Account_Holder_DOB"],
Account_Holder_House_No = sdr["Account_Holder_House_No"],
Account_Holder_Street_Name = sdr["Account_Holder_Street_Name"],
Account_Holder_Post_Code = sdr["Account_Holder_Post_Code"],
Account_Holder_Occupation = sdr["Account_Holder_Occupation"],
Account_Number = sdr["Account_Number"]
});
}
}
conn.Close();
}
return (new JavaScriptSerializer().Serialize(customers));
}
}
这是HTML
@{
Layout = null;
}
<!DOCTYPE html>
<html ng-app="WebClientModule">
<head>
<meta name="viewport" content="width=device-width" />
<title>AccountBalance</title>
<script src="~/Scripts/angular.min.js"></script>
<script src="~/RegistrationScript/AccountBalance.js"></script>
</head>
<body>
<div data-ng-controller="Web_Client_Controller">
Enter Account_Number: <input type="text" ng-model="Account_Number" />
<input type="button" value="search" ng-click="search(Account_Number)" />
<table id="tblContainer">
<tr>
<td>
<table style="border: solid 2px Green; padding: 5px;">
<tr style="height: 30px; background-color: skyblue; color: maroon;">
<th></th>
<th>Account Number</th>
<th>Account Creation Date</th>
<th>Account Type</th>
<th>Branch Sort Code</th>
<th>Account Fees</th>
<th>Account Balance</th>
<th>Over Draft Limit</th>
<th></th>
<th></th>
</tr>
<tbody data-ng-repeat="user in Users">
<tr>
<td></td>
<td><span>{{user.Account_Number}}</span></td>
<td><span>{{user.Account_Creation_Date}}</span></td>
<td><span>{{user.Account_Type}}</span></td>
<td><span>{{user.Branch_Sort_Code}}</span></td>
<td><span>{{user.Account_Fees}}</span></td>
<td><span>{{user.Account_Balance}}</span></td>
<td><span>{{user.Over_Draft_Limit}}</span></td>
<td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td>
<div style="color: red;">{{Message}}</div>
</td>
</tr>
</table>
</div>
</body>
</html>
@{
布局=空;
}
账户余额
输入帐号:
帐号
帐户创建日期
帐户类型
分支排序代码
账户费用
账户余额
超限吃水
{{user.Account{u Number}
{{user.Account\u Creation\u Date}
{{user.Account_Type}
{{user.Branch\u Sort\u Code}
{{user.Account_Fees}
{{user.Account_Balance}}
{{user.Over\u Draft\u Limit}}
{{Message}}
下面是Wcf服务上调试模式的屏幕截图。
以下是谷歌Chrome控制台窗口上的结果。
你应该改变它
$http.post("http://localhost:52098/HalifaxIISService.svc/GetAccountDetails/{Account_Number}" + Id);
到
您正在以
{Account\u Number}15
的形式发送参数。它应该是15
您的$http.post
有一个参数(url,没有数据),它不应该是$http.get
吗?在url中,我已经提到了参数请检查脚本文件代码的语法是否错误,然后了解此帖子被否决的原因。是问题不清楚吗?非常感谢。我是否也要更改界面?最好换个帖子。因为您尚未将任何内容发布到终结点。我进行了更改,同时也更改了接口。现在,我得到了一个错误,即服务终结点现在找到了,如果您说“使其获得”。使用GET请求,我无法在接口方法中传递参数。为了得到正确的结果,我必须做哪些更改。
$http.post("http://localhost:52098/HalifaxIISService.svc/GetAccountDetails/{Account_Number}" + Id);
$http.post("http://localhost:52098/HalifaxIISService.svc/GetAccountDetails?Account_Number=" + Id);