Привет всем, у меня есть следующий код, который отправляет json-строку через jQuery AJAX-вызов моего кода 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):
[HttpPost]
[Audit(EventTypeName = "{controller}/{action} ({verb})", IncludeHeaders = true, IncludeModel = true)]
public string WCF(scannerSettings obj)
{
Dictionary<string, string> resultsBack = new Dictionary<string, string>();
EndpointAddress address = new EndpointAddress(new Uri(ConfigurationManager.AppSettings["EndpointAddress"].ToString()));
NetTcpBinding binding = new NetTcpBinding();
ChannelFactory<IService1> factory;
IService1 SvcCall;
binding.Security.Mode = SecurityMode.Message;
binding.SendTimeout = new TimeSpan(0, 1, 0);
factory = new ChannelFactory<IService1>(binding, address);
SvcCall = factory.CreateChannel();
string scanerData = SvcCall.Scan(obj);
if (scanerData != null)
{
resultsBack.Add("dback", "GOOD");
resultsBack.Add("img", "");
resultsBack.Add("filename", obj.FileName);
}
return JsonConvert.SerializeObject(resultsBack, Formatting.Indented);
}
Код WCF:
public string Scan(scannerSettings obj)
{
TestDelegate d = new TestDelegate(startScan);
IAsyncResult ar = d.BeginInvoke(obj, null, null);
string result = d.EndInvoke(ar);
return result;
}
Как видно из приведенных выше изображений, он отправляет точные данные из 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; }
}
Я подключаюсь к службе WCF локально, используя NetTcpBinding по этому адресу:
net.tcp: // локальный: 2202 / Theservice / tech6140
Кто-нибудь знает, почему это так и как это исправить?