WebアプリケーションにWCFサービスがあり、別のWebアプリケーションに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>
を常駐するWebアプリケーションに私は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と表示しているように、これは問題がドメイン間の問題に関連していることを疑った理由です。しかし、私は確信していません。
この問題の原因を推測できますか? ありがとうございます。
の可能重複[WCF REST方式にはJQueryからJSONデータを送信する問題](http://stackoverflow.com/questions/4875195/problem-sending-json-data-from-jquery-to-wcf-rest-method) – Ray