c# - System.Threading.Tasks.Task`1.GetResultCore
问题描述
我正在使用 HTTPClient 调用一个简单的 Web Api 服务。该服务接受一个参数,如 URL 并将其保存在 SQL 表中,将该 url 转换为 guid 并将其返回给调用者。下面的代码在通过按钮单击事件处理程序调用的 SharePoint Web 部件中使用。
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;
}
}
Web 部件部署到测试环境,当我从测试服务器外部的机器在浏览器中打开页面时,出现此错误。有一次我也在测试服务器中获取它,但是在我第二次单击该按钮后它正常工作,但例如在开发机器中却没有。
这是我得到的错误。
错误消息:出现一个或多个错误。
InnerException:System.Net.Http.HttpRequestException:发送请求时出错。---> System.Net.WebException:远程服务器返回错误:(401)未经授权。---> System.ComponentModel.Win32Exception:登录尝试在 System.Net.NTAuthentication.GetOutgoingBlob(String incomingBlob) 在 System.Net.NTAuthentication.GetOutgoingBlob(Byte[] incomingBlob, Boolean throwOnError, SecurityStatus& statusCode) 处失败System.Net.NegotiateClient.Authenticate(String challenge, WebRequest webRequest, ICredentials credentials) at System.Net.AuthenticationManagerDefault.Authenticate(String challenge, WebRequest request, ICredentials 凭证)在系统。堆栈跟踪:
在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
TUrlControl:
在 System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
在 AIntranet.WebParts.TUrl.TUrlUserControl.d__3.MoveNext()从先前抛出异常的位置结束堆栈跟踪
在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
在 System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
在 AIntranet.WebParts.TUrl.TUrlUserControl.DisplayUrl (String host, String paramUrl)
at AIntranet.WebParts.TUrl.TUrlUserControl.b__1_0()
at Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess(CodeToRunElevated secureCode)
at Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges(WaitCallback secureCode, Object param)
at Microsoft .SharePoint.SPSecurity.RunWithElevatedPrivileges(CodeToRunElevated 安全代码)
在 AIntranet.WebParts.TUrl.TUrlUserControl.btnTUrl_Click(对象发送者,EventArgs e)