无法使用ajax调用WCF

本文关键字:调用 WCF ajax | 更新日期: 2023-09-27 17:53:22

我是WCF的新手,并创建了一个WCF并将其命名为CategoryMasterWCF。带有iCategoryMasterWCF.cs的svc文件,具有以下代码

namespace InfraERP.WebServices
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "ICategoryMasterWCF" in both code and config file together.
[ServiceContract]
public interface ICategoryMasterWCF
{
    [OperationContract]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat= WebMessageFormat.Json)]
    string DoWork();
    [OperationContract]
    [WebGet]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json)]
    string sting(int id);
}

}

和CategoryMasterWCF.svc.cs的代码如下

namespace InfraERP.WebServices
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "CategoryMasterWCF" in code, svc and config file together.
 [AspNetCompatibilityRequirements(RequirementsMode
= AspNetCompatibilityRequirementsMode.Allowed)]
public class CategoryMasterWCF : ICategoryMasterWCF
{
   public string DoWork()
    {
        return "Hello, It Worked! ";
    }
    public string sting(int id)
    {
        string _sting = "Number is " +id.ToString();
        return _sting;
    }
}
}

然后我在我的aspx中添加了如下代码

 $.ajax({
        type: "POST",
        url: '../WebServices/CategoryMasterWCF.svc/sting',
        contentType: "application/json; charset=UTF-8; charset-uf8",
        data: {id:"1"},
        processData: true,
        dataType: "json",
        success: function (msg) {
            alert(msg);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(textStatus + "---" + errorThrown);
        }
    });

出现的错误是"不支持的媒体类型"。

我不是WCF或Asp.net方面的专家。我在网上和stackoverflow中搜索了很多,并测试了所提供的更改,但没有发现好的结果。目前我还没有在web配置做任何改变。请帮我找个出路。

无法使用ajax调用WCF

您是否尝试从ajax调用中删除contentType和dataType ?

[WebGet]属性在sting方法上面做什么?您应该使用其中的任何一个(WebGet用于Http GET, WebInvoke用于其余部分,默认为POST)。因为你正在做一个POST请求在你的网站,你可以删除它。

还将您发送的数据转换为JSON字符串:

$.ajax({
    type: "POST",
    url: '../WebServices/CategoryMasterWCF.svc/sting',
    contentType: "application/json; charset=UTF-8; charset-uf8",
    data: JSON.stringify({id:"1"}),
    processData: true,
    dataType: "json",
    success: function (msg) {
        alert(msg);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(textStatus + "---" + errorThrown);
    }
});