У меня есть служба WCF в веб-приложении и есть клиент Ajax в другом веб-приложении. Что касается междоменной проблемы, у меня нет проблем с вызовом GET ajax, но у меня есть проблема с POST-вызовом ajax. Я не уверен, что это из-за междоменной проблемы. В любом случае, когда GET ajax успешно запускает службу WCF, но это не происходит в случае вызова POST ajax.jQuery AJAX POST-вызов не вызывает службу WCF
службы WCF
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "UserService/AddUser", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
public User AddUser(User input)
{
var user = input;
// Do something business logic
return user;
}
Global.asax в веб-приложения, службы WCF находится
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
Ajax код
<script type="text/javascript">
$(document).ready(function() {
$("#submit").click(function() {
$.ajax({
cache: false,
type: "POST",
async: false,
url: "http://localhost:2000/UserService/AddUser",
data: { "LoginId" : $("#LoginId").val(), "Name" : $("#Name").val() },
contentType: "application/json; charset=utf-8",
dataType: "json",
processData: true,
success: function (userViewModel) {
var user = userViewModel;
alert(user);
}
});
});
});
</script>
Я отлажена его с разработчиками инструмента в браузере Chrome и I получил следующее сообщение
Request URL:http://localhost:2000/UserService/AddUser
Request Method:POST
Status Code:400 Bad Request
Request Headersview source
Accept:application/json, text/javascript, */*; q=0.01
Accept-Charset:windows-949,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4
Connection:keep-alive
Content-Length:18
Content-Type:application/json; charset=UTF-8
Host:localhost:2000
Origin:http://localhost:3000
Referer:http://localhost:3000/views/useradd.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7
Request Payload
LoginId=11&Name=22
Response Headersview source
Access-Control-Allow-Origin:*
Cache-Control:no-cache, no-store
Connection:Close
Content-Length:1760
Content-Type:text/html
Date:Tue, 14 Feb 2012 05:56:42 GMT
Expires:-1
Pragma:no-cache
Server:ASP.NET Development Server/10.0.0.0
X-AspNet-Version:4.0.30319
Как вы видите, это 400 Bad Request, поэтому я сомневался, что проблема связана с проблемой междоменного доступа. Но я не уверен.
Можете ли вы угадать причину этой проблемы? Спасибо заранее.
возможно дубликат [Проблема отправки данных в формате JSON с JQuery для метода WCF REST ] (http://stackoverflow.com/questions/4875195/problem-sending-json-data-from-jquery-to-wcf-rest-method) – Ray