C# 从winform/ASP.net jquery ajax调用WCF服务

C# 从winform/ASP.net jquery ajax调用WCF服务,c#,ajax,asp.net-mvc,wcf,nettcpbinding,C#,Ajax,Asp.net Mvc,Wcf,Nettcpbinding,嘿,我有以下代码,它通过jQuery AJAX调用将json字符串发送到我的asp.net代码,并将其放入它们的类名中 JavaScript Ajax: ASP.net代码隐藏: WCF代码: AJAX的代码: $("#WCF").on("click", function () { var scannerSettings = { "FileType": "TEST1", "FileName": "C:\Program Files (x86)\some

嘿,我有以下代码,它通过jQuery AJAX调用将json字符串发送到我的asp.net代码,并将其放入它们的类名中

JavaScript Ajax:

ASP.net代码隐藏:

WCF代码:

AJAX的代码:

$("#WCF").on("click", function () {
    var scannerSettings = {
        "FileType": "TEST1",
        "FileName": "C:\Program Files (x86)\somethibg\Sample\ScanTest\VCS 2008\bin\Debug\image#####",//$('').text(),
        "JpegQuality": "TEST2",
        "ScanContinue": false,
        "Resolution": "TEST3",
        "Rotation": "TEST4",
        "PaperSupply": "TEST5",
        "PaperSize": "TEST6",
        "Orientation": "TEST7",
        "CustomPaperWidth": 8.268,
        "CustomPaperLength": 11.693,
        "JobControl": "TEST8",
        "PunchHoleRemoval": "TEST9"
    };

    $.ajax({
        type        : "POST",
        contentType : "application/json",
        dataType    : "json",
        url         : ajaxDirPath + "WCF",
        data        : JSON.stringify({ "obj": scannerSettings }),
        cache       : false,
        success     : ServiceSucceeded,
        error       : ServiceFailed
    });
});
ASP.net代码隐藏代码(HomeController.cs):

}

从上面的图像中可以看到,它从AJAX->HomeController.cs发送数据,但一旦我再次将数据发送到WCF服务器,如AJAX->HomeController.cs->WCF,它就不再具有所需的值-它们都是null

json类:

[DataContract]
public class scannerSettings
{
    [DataMember]
    public string FileType { get; set; }
    [DataMember]
    public string FileName { get; set; }
    [DataMember]
    public string JpegQuality { get; set; }
    [DataMember]
    public bool ScanContinue { get; set; }
    [DataMember]
    public string Resolution { get; set; }
    [DataMember]
    public string Rotation { get; set; }
    [DataMember]
    public string PaperSupply { get; set; }
    [DataMember]
    public string PaperSize { get; set; }
    [DataMember]
    public string Orientation { get; set; }
    [DataMember]
    public string CustomPaperWidth { get; set; }
    [DataMember]
    public string CustomPaperLength { get; set; }
    [DataMember]
    public string JobControl { get; set; }
    [DataMember]
    public string PunchHoleRemoval { get; set; }
}
我正在使用NetTcpBinding通过以下地址本地连接WCF服务:

净。tcp://localhost:2202/theService/tech6140


有人知道这是为什么以及如何修复吗?

如果服务器和客户端上的类名称空间不同,WCF服务可能无法将请求对象识别为
scannerSettings
。我几个星期前犯了这个错误

在服务器上,我有请求对象

Acme.Service.RequestObject
当我生成服务代理时,它包含了请求对象。出于美观原因,我将客户端上的名称空间更改为

SomeCoolNamespace.Service.RequestObject

调用服务时,服务将收到一个请求对象,该对象的命名空间与预期的命名空间不匹配,并且参数将为null。

当要传输的对象的命名空间在服务器和客户端之间不同时,我曾经遇到过此问题,因此,完全限定类型名称不匹配,WCF服务无法识别它。@DanWilson您能举一个例子说明您在说什么吗?服务器将
scannerSettings
视为
Org.code.scannerSettings
,而客户端将其视为
ServiceProxy.scannerSettings
。我假设客户端使用
scannerSettings
作为生成的代理类的一部分。@DanWilson举个例子会更好。我不知道您从哪里获得Org.code.scannerSettings和ServiceProxy.scannerSettings?
Acme.Service.RequestObject
SomeCoolNamespace.Service.RequestObject