C# 呼叫WCF服务后出现问题-400错误请求
我在Windows服务器上发布了IIS 7.5上的WCF服务 它基本上有两种方法,仅用于烟雾测试 服务合同如下:C# 呼叫WCF服务后出现问题-400错误请求,c#,ajax,json,wcf,post,C#,Ajax,Json,Wcf,Post,我在Windows服务器上发布了IIS 7.5上的WCF服务 它基本上有两种方法,仅用于烟雾测试 服务合同如下: [ServiceContract] public interface IFSMServiceWeb { [OperationContract] [WebInvoke(Method="POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrappe
[ServiceContract]
public interface IFSMServiceWeb
{
[OperationContract]
[WebInvoke(Method="POST", ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json)]
string registraUtenteViaMail(string username, string password, string key, string dbVersion);
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped)]
string loginUtenteViaMail(string username, string password, string key, string dbVersion);
}
这里是实施:
public class FSMServiceWeb : IFSMServiceWeb
{
public string registraUtenteViaMail(string username, string password, string key, string dbVersion)
{
return username + password + key + dbVersion;
}
public string loginUtenteViaMail(string username, string password, string key, string dbVersion)
{
return username + password + key + dbVersion;
}
}
我可以用GET调用方法call loginUtenteViaMail,但是我不能用POST方法调用方法registuretenteviamail
这里是用于测试POST方法的javascript代码
$(document).ready(function(){
$("#send").click(function(){
var username = $("#username").val();
var password = $("#password").val();
var key = $("#key").val();
var dbVersion = $("#dbVersion").val();
var dati = {username : username, password : password, key : key, dbVersion : dbVersion};
$.ajax({
type: 'POST',
url: '/FSMServiceWeb.svc/registraUtenteViaMail',
data: JSON.stringify(dati),
success: function (data) {
console.log(data);},
error: function (data){},
dataType: 'JSON'
});
});
});
我获得此错误(Chrome控制台):
我错在哪里
提前谢谢你不行!我解决了这个问题。 我错过了AJAX请求的一个重要部分:
contentType: "application/json; charset=utf-8",
事实上,正确的要求应该是:
$(document).ready(function(){
$("#send").click(function(){
var username = $("#username").val();
var password = $("#password").val();
var key = $("#key").val();
var dbVersion = $("#dbVersion").val();
var dati = {username : username, password : password, key : key, dbVersion : dbVersion};
$.ajax({
type: 'POST',
url: '/FSMServiceWeb.svc/registraUtenteViaMail',
contentType: "application/json; charset=utf-8", // MISSING PART!
data: JSON.stringify(dati),
success: function (data) {
console.log(data);},
error: function (data){},
dataType: 'JSON'
});
});
});
你能发布JSON.stringify(dati)的输出吗?console.log(JSON.stringify(dati));返回以下内容:{“用户名”:“名称”、“密码”:“机密”、“密钥”:“1234”、“dbVersion”:“1.0”}尽管有contentType属性,我仍然存在此问题
$(document).ready(function(){
$("#send").click(function(){
var username = $("#username").val();
var password = $("#password").val();
var key = $("#key").val();
var dbVersion = $("#dbVersion").val();
var dati = {username : username, password : password, key : key, dbVersion : dbVersion};
$.ajax({
type: 'POST',
url: '/FSMServiceWeb.svc/registraUtenteViaMail',
contentType: "application/json; charset=utf-8", // MISSING PART!
data: JSON.stringify(dati),
success: function (data) {
console.log(data);},
error: function (data){},
dataType: 'JSON'
});
});
});