public void UploadFileTest()
 {
     try
     {
         using (var service = new FileCollectorServiceClient())
         {
             var result = service.UploadFile("Name " + Guid.NewGuid(), new DateTime(2000, 1, 1),
                                             Encoding.UTF8.GetBytes("Новый тест"));
         }
         Assert.IsTrue(true);
     }
     catch (Exception e)
     {
         Assert.Fail(e.ToString());
     }
 }
Beispiel #2
0
        /// <summary>
        /// Асинхронный паттерн TAP.
        /// Обработчик файлов для вызова в асинхронной операции,
        /// отправляет их в хранилище и регистрирует все процессы, включая ошибки, в журнале приложений windows.
        /// </summary>
        /// <param name="fileInfo">Файл</param>
        /// <param name="eventLog">Журнал</param>
        internal static Task <bool> ProcessTaskAsync(FileInfo fileInfo, EventLog eventLog)
        {
            var taskCompletionSource = new TaskCompletionSource <bool>();

            var monitoringPath    = new DirectoryInfo(Settings.Default.MonitoringPath);
            var sizeErrorPath     = new DirectoryInfo(Settings.Default.SizeErrorPath);
            var uploadErrorPath   = new DirectoryInfo(Settings.Default.UploadErrorPath);
            var maxUploadFileSize = Settings.Default.MaxUploadFileSize;

            fileInfo.Refresh();

            if (fileInfo.Length <= maxUploadFileSize)
            {
                try
                {
                    eventLog.WriteEntry("Старт загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                    using (var service = new FileCollectorServiceClient())
                    {
                        byte[] data = File.ReadAllBytes(fileInfo.FullName);

                        service.UploadFile(fileInfo.Name, fileInfo.LastWriteTime, data);

                        eventLog.WriteEntry("Успешное завершение загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                        try
                        {
                            File.Delete(fileInfo.FullName);
                            eventLog.WriteEntry("Удаление после успешной загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                        }
                        catch (Exception e0)
                        {
                            eventLog.WriteEntry("Ошибка после успешной загрузки при удалении файла " + fileInfo.Name + ". Описание ошибки: " + e0, EventLogEntryType.Error);
                        }
                    }
                }
                catch (Exception e1)
                {
                    eventLog.WriteEntry("Старт перемещения файла по причине сбоя загрузки: " + fileInfo.Name + ". Описание ошибки: " + e1, EventLogEntryType.Error);
                    try
                    {
                        File.Move(fileInfo.FullName, uploadErrorPath.FullName + fileInfo.Name);
                        eventLog.WriteEntry("Завершение перемещения файла по причине сбоя загрузки: " + fileInfo.Name, EventLogEntryType.Information);
                    }
                    catch (Exception e2)
                    {
                        eventLog.WriteEntry("Ошибка при перемещении файла по причине сбоя загрузки: " + fileInfo.Name + fileInfo.Name + ". Описание ошибки: " + e2, EventLogEntryType.Error);
                    }
                }
            }
            else
            {
                eventLog.WriteEntry("Старт перемещения файла по причине превышения размера: " + fileInfo.Name, EventLogEntryType.Error);
                try
                {
                    File.Move(fileInfo.FullName, sizeErrorPath.FullName + fileInfo.Name);
                    eventLog.WriteEntry("Завершение перемещения файла по причине превышения размера: " + fileInfo.Name, EventLogEntryType.Information);
                }
                catch (Exception e3)
                {
                    eventLog.WriteEntry("Ошибка при перемещении файла по причине превышения размера: " + fileInfo.Name + fileInfo.Name + ". Описание ошибки: " + e3, EventLogEntryType.Error);
                }
            }

            taskCompletionSource.SetResult(true);

            return(taskCompletionSource.Task);
        }