我在Windows Server上发布了IIS 7.5上的WCF服务
基本上有两种方法,仅用于烟雾测试。
这里是ServiceContract:
[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调用方法调用loginUtenteViaMail没有问题,但我无法使用POST方法调用方法registraUtenteViaMail 。
这里用于测试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控制台):
POST http://xxx.xxx.xxx.xxx/FSMServiceWeb.svc/registraUtenteViaMail 400 (Bad Request) jquery.min.js:4
l.cors.a.crossDomain.send jquery.min.js:4
o.extend.ajax POSTtest.js:12
(anonymous function) jquery.min.js:3
o.event.dispatch jquery.min.js:3
r.handle jquery.min.js:3
我哪里错了?
提前谢谢
答案 0 :(得分:3)
没办法!我解决了这个问题。 我想念我的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'
});
});
});