Ошибка Newtonsoft JSON - указывает на локальный компьютер, а не на сервер - PullRequest
0 голосов
/ 01 октября 2019

У меня проблема с десериализацией объекта 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...