abdul subhan mohammed Ответов: 1

Как загрузить данные с помощью служб windows C#


Дорогие Все,

Я пытаюсь создать службу windows для загрузки данных с клиентской машины на сервер с помощью Ajax/web-сервера в базу данных SQL.

Здесь службы окна создадут один файл журнала.

Файл на компьютере клиента зашифрован, поэтому службы windows сначала расшифруют его, а затем загрузят данные на сервер. И есть один коммуникационный помощник для загрузки данных с клиентской машины на сервер.

Службы успешно получают файл и расшифровывают его, но не загружают данные на сервер.

Что я уже пробовал:

public string UploadOfflineResult()
        {
            var pathSouce = Directory.GetParent(Directory.GetParent(Environment.SystemDirectory.ToString()).ToString()).FullName;
            var offlinePath = pathSouce + ConfigurationManager.AppSettings["resultFile"];
            WriteToFile(offlinePath);
            FileInfo _file = new FileInfo(offlinePath);
            WriteToFile(_file.Exists ? "Offline result file exist" : "Offline result file does not exist");


            if (_file.Exists && getPing())
            {
                WriteToFile("Working ON offline exam result file");
                OfflineExamResult offlineExamResult = null;
                try
                {
                    FileStream fs = new FileStream(@"" + offlinePath, FileMode.Open);
                    WriteToFile("converted to stream file: " + @"" + offlinePath);
                    using (StreamReader sr = new StreamReader(fs))
                    {
                        WriteToFile("Reading file");
                        string data = sr.ReadToEnd();
                        offlineExamResult = Cryptography.Decrypt<OfflineExamResult>(data);
                        WriteToFile("CS: " + offlineExamResult.CandidateSessionID.ToString());
                        WriteToFile("Offline result file DECRYPTED");

                        //Not able to Upload data CommunicationHelper.UpdateCandidateOfflineExamResultUsingWindowService(
                            JsonConvert.SerializeObject(offlineExamResult, Formatting.None, new JsonSerializerSettings
                            {
                                NullValueHandling = NullValueHandling.Ignore
                            }));

                        WriteToFile("UpdatedOfflineCandidateExamResult: CandidateSessionID=" + offlineExamResult.CandidateSessionID + " ");
                        return true.ToString();
                    }
                }
                catch (Exception ex)
                {
                    ex = ex.InnerException; //Avoid warning
                    return JsonConvert.SerializeObject(
                        new { success = false, message = "Invalid result file content" },
                        Formatting.None,
                        new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
                }



            }
            return false.ToString();
        }


CommunicationHelper.в CS
public static string UpdateCandidateOfflineExamResultUsingWindowService(string _offlineExamResult, string fullUrl)
       {
           WebClient webClient = new WebClient();
           webClient.Encoding = Encoding.UTF8;

           string postData = string.Format("offlineExamResult={0}", _offlineExamResult);
           string result = Task.Run(() => webClient.UploadStringTaskAsync(fullUrl, postData)).Result;

           return true.ToString();
       }


Кто-нибудь может пожалуйста помочь мне.


Спасибо

F-ES Sitecore

Где находится код, который выполняет загрузку?

Dave Kreskowiak

Вы никогда не показывали код для этого звонка:
Коммуникационный помощник.UpdateCandidateOfflineExamResultusingwindowservice

И вы никогда не объясняли, что происходит, когда этот вызов сделан или какие-либо сообщения об ошибках возвращаются.

Это невозможно для любого, чтобы помочь вам без этой информации.

abdul subhan mohammed

Для преобразования в offlineResultInfo.cs

Dave Kreskowiak

Ваше утверждение бессмысленно. Я понятия не имею, что такое "offliceResultInfo.cs", и у меня нет к нему доступа, потому что он находится на вашей машине.

abdul subhan mohammed

Нет никаких ошибок, и ничего не происходит. Я проверил лог-файл, он работает до тех пор, пока "файл не расшифрован", но не может связаться с веб-сервером.

Dave Kreskowiak

Без кода, который вы написали для CommunicationHelper.UpdateCandidateOfflineExamResultusingwindowservice, это невозможно сказать вам что-нибудь полезное.

Gerry Schmitz

И почему вам нужно "расшифровать" перед загрузкой. Не иметь смысла.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Вы не отправляете данные в формате json на свой веб-сервис. Вы посылаете "что-то={jsondata}". Ты этого не сделаешь. Вы отправляете только данные в формате json, а не переменная= часть.