Как исправить «Задача была отменена» при загрузке файла - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь загрузить файл журнала с клиентского приложения для настольного компьютера на сервер базы данных sql с помощью webapi2, и я получаю эту ошибку «Задача была отменена», эта ошибка не появляется, когда я размещаю проект webapi на локальной машине хотя!

public static bool UploadLogData(string exceptionLog)
{
        bool result = true;


        string dataFilePath = AppDomain.CurrentDomain.BaseDirectory + "ExceptionLog.zip";

        CommonParamModel responseModel = new CommonParamModel();

        try
        {
            HttpClient httpClient = new HttpClient() { BaseAddress = new Uri("http://mywebsite.com") };
            var pairs = new List<KeyValuePair<string, string>>
                    {
                        new KeyValuePair<string, string>( "P1",  ComputerInfoHelper.GetCustomMachineKey())
                        , new KeyValuePair<string, string>( "P2", exceptionLog)
                    };

            var content = new MultipartFormDataContent();

            FileStream filestream = new FileStream(dataFilePath, FileMode.Open);
            string fileName = System.IO.Path.GetFileName(dataFilePath);

            content.Add(new StreamContent(filestream), "file", fileName);
            content.Add(new FormUrlEncodedContent(pairs));

            httpClient.Timeout = TimeSpan.FromMinutes(30);

            var response = httpClient.PostAsync("api/Users/AddExceptionDataLog/", content).Result;
            if (response.IsSuccessStatusCode)
            {
                string strResult = response.Content.ReadAsStringAsync().Result;
                JObject json = JObject.Parse(strResult);
                responseModel = json.ToObject(typeof(FreeUserApp)) as CommonParamModel;
            }
            else
            {
                result = false;
            }

        }
        catch (Exception ex)
        {
            Utilities.Error.LogException(Utilities.Error.ErrorSources.Exception, ex.Message, Utilities.Debugger.GetCurrentMethod(), ex);
            result = false;
        }

        return true;
    }

1 Ответ

0 голосов
/ 17 апреля 2019

Благодаря Michael Randall и DBro Это действительно сработало, проблема была решена после использования await на клиенте и на методе API ...

...