我正在尝试使用Jquery ajax调用调用WCF REST服务方法并收到类似
的错误"NetworkError: 405 Method Not Allowed - http://localhost:55911/Service1.svc/Testing"
这是我的代码
$(document).ready(function () {
$("#Button2").click(function () {
var Input = {
UserId: "11111"
};
$.ajax({
type: "POST",
url: " http://localhost:55911/Service1.svc/Testing",
data: JSON.stringify(Input),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Success");
},
error: function (xhr, status, error) {
alert("failure");
alert(stattus.toString);
}
});
});
});
和
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/Testing", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string Testing(int UserId);
和
public string Testing(int UserId)
{
sqlConn = new SqlConnection(connectionString);
sqlConn.Open();
sqlCmd = new SqlCommand("TestInsertion", sqlConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add("@id",UserId);
sqlCmd.ExecuteNonQuery();
sqlConn.Close();
return "true";
}
我在这里做错了什么?有什么建议吗?
编辑:评论//contentType: "application/json"
后,它正在发布并投掷
"NetworkError: 400 Bad Request - http://localhost:55911/Service1.svc/Testing"
答案 0 :(得分:1)
POST
(html
)和服务器(WCF service
)html
)使用了错误的HTTP
方法,WCF service
正常工作。请参阅:405 Method Not Allowed Error in WCF
我相信保留其他内容(也是内容类型contentType: "application/json"
),因为它只是将参数类型从string
改为int
WCF service
public string Testing(string UserId)
{
sqlConn = new SqlConnection(connectionString);
sqlConn.Open();
sqlCmd = new SqlCommand("TestInsertion", sqlConn);
sqlCmd.CommandType = CommandType.StoredProcedure;
sqlCmd.Parameters.Add("@id",UserId);
sqlCmd.ExecuteNonQuery();
sqlConn.Close();
return "true";
}
答案 1 :(得分:1)
您定义的UriTemplate
错误,请尝试使用它:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/Testing?U={UserId}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
string Testing(string UserId);
然后在实现中将UserId
转换为int。
答案 2 :(得分:0)
通常在您的方法抛出异常时会发生此错误,因此我建议调试
通过在
的开头写下这行代码将它附加到进程功能
Debugger.launch();
答案 3 :(得分:0)
您是否同时运行WCF服务项目和消耗项目(AJAX调用)(在Visual Studio的同一实例中)?如果是这样,请尝试两个不同的VS实例并首先运行WCF项目,然后运行使用项目。另外,请尝试将dataType
用作jsonp
而不是json
。
答案 4 :(得分:0)
检查HTTP Request方法是POST还是OPTIONS。这个link会很有用。
答案 5 :(得分:0)
我认为您需要使用JSONP进行跨域调用以绕过浏览器限制
这个答案非常有用:WCF error : 405 Method Not Allowed