У меня проблема с десериализацией объекта JSON на сервере, а не на локальной машине.
Я могу написать ошибку, и она продолжает говорить: «Значение не может быть нулевыми по какой-то причине он указывает на строку cs: на моей локальной машине, а не на сервере. Ошибка возвращается из CTS (JsonRequest)
Он отлично работает на локальном компьютере без ошибок, но при перемещении на сервер возникает ошибка.
Сообщение об ошибке:
System.ArgumentNullException
Message : Value cannot be null.
Parameter name: value
StackTrace : at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
Возвращает строку JSON:
{
"requestContext": {
"shipTo": "0000012345",
"timeZone": "420",
"langCode": "en"
},
"ID": "1234567",
"deviceID": "abcdefgh-c633-ijkl-9080"
}
Код:
var JsonRequest = JsonConvert.SerializeObject(NewRequest, Formatting.Indented);
var JsonResponse = CTS(JsonRequest);
var Response = JsonConvert.DeserializeObject<Response>(JsonResponse);
public string CTS(string JsonData) {
var sslPath = Server.MapPath("~/") + Properties.Settings.Default.CertPath + Properties.Settings.Default.CertName;
try {
X509Certificate2Collection certificates = new X509Certificate2Collection();
var myCert = new X509Certificate2(sslPath, @ "NotYourPassword");
certificates.Add(myCert);
ServicePointManager.ServerCertificateValidationCallback = (a, b, c, d) => true;
// Create web request
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(new Uri("https://somedomain.com"));
request.ClientCertificates = certificates;
request.ContentType = "application/json";
request.Method = "POST";
request.ContentLength = JsonData.Length;
using(var streamWriter = new StreamWriter(request.GetRequestStream())) {
string json = JsonData;
streamWriter.Write(json);
streamWriter.Flush();
}
// Web response
var httpResponse = (HttpWebResponse) request.GetResponse();
// Get the response back
using(var streamReader = new StreamReader(httpResponse.GetResponseStream())) {
var responseText = streamReader.ReadToEnd();
return responseText;
}
} catch (Exception ex) {
WriteError.WriteErrorToFile(ex);
return null;
}
}