WCF服务JSON使用ASP.NET发布数据

时间:2014-11-04 08:24:50

标签: javascript c# asp.net json wcf

在ASP.NET中使用JSON时使用POST时遇到问题。请在使用POST时检查我的代码。 javascript代码有问题吗?

确切错误:

  

无法加载资源:服务器响应状态为405   (不允许的方法)   localhost:99 / Service1.svc / api / updtelogin.json XMLHttpRequest   无法加载localhost:99 / Service1.svc / api / updtelogin.json。没有   '访问控制允许来源'标题出现在请求的上   资源。 Origin' localhost:1110'因此是不允许的   访问。响应的HTTP状态代码为405。

IService

    [OperationContract]
    [WebInvoke(Method = "POST",
        RequestFormat = WebMessageFormat.Json,
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "api/updtelogin.json")]
    UpdateUser updteUser(RequestData rData);

的RequestData

[DataContract(Namespace = "")]
public class RequestData
{
    [DataMember]
    public string details { get; set; }
}

Service.svc

    private UpdateUser updateuser(RequestData rData)
    {
        return updteUser(rData);
    }

    public UpdateUser updteUser(RequestData rData)
    {
        var data = rData.details.Split('|');            

    }

这是我在ASP.NET上的javascript

  <script type="text/javascript">
    $("#btnChange").live("click", function () {
        var test = {};
        test.uname = "admin";
        $.ajax({
            type: 'POST',
            url: 'http://localhost:99/Service1.svc/api/updtelogin.json',
            data: "{rData:" + JSON.stringify(test) + "}",
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (r) {
                alert(r.d.uname);
            }
        });
    });
</script>

1 个答案:

答案 0 :(得分:1)

如果我错了,请纠正我,你有两个申请:

  • localhost:99 - wcf service
  • localhost:1110 - 调用您的wcf服务的Web应用程序

由于端口不同,这违反了"same origin policy" ajax请求。

您可以在此处获得如何将CORS标头添加到WCF服务的说明:Enable CORS on WCF Service. Get HTTP 405: Method Not Allowed