System.Threading.Tasks.Task`1.GetResultCore - PullRequest
0 голосов
/ 07 января 2019

Я звоню в простую службу Web Api, используя HTTPClient. Служба принимает параметр, такой как URL, и сохраняет его в таблице SQL, преобразует этот URL в guid и возвращает его вызывающей стороне. Приведенный ниже код используется внутри веб-части SharePoint, которая вызывается с помощью обработчика событий нажатия кнопки.

public void DisplayUrl(string host,string paramUrl)
        {
            string longUrl = string.Format("https://{0}-UrlApi/AddUrl?longUrl={1}", host,paramUrl);
            var result = GetUrl(longUrl).GetAwaiter().GetResult();
            tboxResults.Text = result.ShortUrl;
        }

protected static async Task<ShortUrlResponse> GetUrl(string baseUrl)
{
    HttpClientHandler handler = new HttpClientHandler();
    handler.UseDefaultCredentials = true;

    using (var client = new HttpClient(handler))
    {

        var response = client.GetAsync(baseUrl).Result;
        if (response.IsSuccessStatusCode)
        {
            HttpResponseMessage response1 = response;
            response.EnsureSuccessStatusCode();
            var resp = await response.Content.ReadAsStringAsync();
            var result = JsonConvert.DeserializeObject<ShortUrlResponse>(resp);
            return result;

        }
        return null;
    }

}

Веб-часть развернута в среде тестирования, и когда я открываю страницу в браузере с компьютера вне тестового сервера, я получаю эту ошибку. В какой-то момент я тоже получил его на тестовом сервере, но после второго нажатия кнопки он заработал правильно, но не на компьютере разработчика, например.

Это ошибка, которую я получаю.

Сообщение об ошибке: произошла одна или несколько ошибок.
InnerException: System.Net.Http.HttpRequestException: при отправке запроса произошла ошибка. ---> System.Net.WebException: удаленный сервер вернул ошибку: (401) не авторизован. ---> System.ComponentModel.Win32Exception: попытка входа не удалась при System.Net.NTAuthentication.GetOutgoingBlob (Byte [] входящийBlob, Boolean throwOnError, SecurityStatus & statusCode) в System.Net.NTAuthentication.GetOutgoingBlob (String входящийBlob) в System.Net.NegotiateClient.DoAuthenticate (вызов строки, веб-запрос webRequest, учетные данные ICredentials, логический preAuthenticate) в System.Net.NegotiateClient.Authenticate (вызов строки, веб-запрос webRequest, учетные данные ICredentials) на System.Net.AuthenticationManagerDefault.Authenticate (вызов строки, Запрос WebRequest, учетные данные ICredentials) на System.Net.AuthenticationState.AttemptAuthenticate (HttpWebRequest httpWebRequest, ICredentials authInfo) в System.Net.HttpWebRequest.CheckResubmitForAuth () в System.Net.HttpWebRequest.CheckResubmit (Exception & e, Boolean & disableUpload) --- Конец внутренней трассировки стека исключений --- в System.Net.HttpWebRequest.EndGetResponse (IAsyncResult asyncResult) в System.Net.Http.HttpClientHandler.GetResponseCallback (IAsyncResult ar) --- Конец внутренней трассировки стека исключений

StackTrace:

в System.Threading.Tasks.Task`1.GetResultCore (логическое ожидание завершения уведомления)

TUrlControl:
at System.Threading.Tasks.Task`1.GetResultCore (логическое ожидание завершения уведомления)
в AIntranet.WebParts.TUrl.TUrlUserControl.d__3.MoveNext ()

Конец стека трассировки от предыдущего местоположения, где было сгенерировано исключение

в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw ()
в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Задача задача)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult ()
в AIntranet.WebParts.TUrl.TUrlUserControl.DisplayUrl (Строковый хост, String paramUrl)
в AIntranet.WebParts.TUrl.TUrlUserControl.b__1_0 ()
в Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess (CodeToRunElevated SecureCode)
в Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges (WaitCallback secureCode, Object param)
в Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges (CodeToRunElevated SecureCode)
в AIntranet.WebParts.TUrl.TUrlUserControl.btnTUrl_Click (Отправитель объекта, EventArgs e)

...