jquery – 415不支持的媒体类型从$.ajax调用WCF服务

前端之家收集整理的这篇文章主要介绍了jquery – 415不支持的媒体类型从$.ajax调用WCF服务前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图从ASPX页面调用WCF Web服务,如下所示:
var payload = {
    applicationKey: 40868578
};

$.ajax({
    url: "/Services/AjaxSupportService.svc/ReNotify",type: "POST",data: JSON.stringify(payload),contentType: "application/json",dataType: "json"
});

这样做会导致Web服务器返回错误415 Unsupported Media Type.我确定这是WCF服务的配置问题,定义如下:

[OperationContract]
[WebInvoke(Method = "POST",RequestFormat = WebMessageFormat.Json)]
void ReNotify(int applicationKey);

web.config文件中没有条目,因此假设该服务使用默认配置.

解决方法

我不是这方面的专家,事实上我遇到了同样的问题(另一个原因).但是,似乎WCF服务本身并不支持AJAX,因此您必须在web.config文件中包含以下代码才能启用它.
<system.serviceModel>
    <behaviors>
        <endpointBehaviors>
            <behavior name="NAMESPACE.AjaxAspNetAjaxBehavior">
                <enableWebScript />
            </behavior>
        </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
        multipleSiteBindingsEnabled="true" />
    <services>
        <service name="NAMESPACE.SERVICECLASS">
            <endpoint address="" behaviorConfiguration="NAMESPACE.AjaxAspNetAjaxBehavior"
                binding="webHttpBinding" contract="NAMESPACE.SERVICECLASS" />
        </service>
    </services>
</system.serviceModel>

然后在服务类中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;

namespace NAMESPACE
{
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    [ServiceContract(Namespace = "")]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class SERVICECLASS
    {
        // To use HTTP GET,add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json)
        // To create an operation that returns XML,//     add [WebGet(ResponseFormat=WebMessageFormat.Xml)],//     and include the following line in the operation body:
        //         WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
        [OperationContract]
        public string DoWork()
        {
            // Add your operation implementation here
            return "Success";
        }

        // Add more operations here and mark them with [OperationContract]
    }
}

这是我在添加启用AJAX的WCF服务时由VS 2012生成内容.

原文链接:/jquery/178531.html

猜你在找的jQuery相关文章