c# - 为什么这个 web api 调用没有返回?
问题描述
我的 MVC 应用程序的 Global.asax 中有以下方法:
protected void Application_OnPostAuthenticateRequest(object sender, EventArgs e)
{
SetUserRolesToSession().GetAwaiter().GetResult();
}
protected async Task SetUserRolesToSession()
{
var networkUserIdParts = networkUserId.Split(new char[] { '\\' });
var baseUrl = ConfigurationManager.AppSettings["SecurityApiBaseUrl"].ToString();
var userSearchRequest = new UserSearchRequest
{
NetworkUserId = Request.LogonUserIdentity.Name
};
var user = (await new SecurityApiServiceWrapper(baseUrl)
.GetUsersAsync(userSearchRequest)).FirstOrDefault();
Session["Roles" + "_" + networkUserId] = user?.Groups.Select(x => x.Name).ToList();
}
然后我在 SecurityApiServiceWrapper 中有以下代码:
public async Task<List<User>> GetUsersAsync(UserSearchRequest userSearchRequest)
{
using (var client = GetHttpClient(_baseUrl))
{
var response = await client.PostAsJsonAsync("api/v1/users/search", userSearchRequest);
if (response.IsSuccessStatusCode)
{
var users = await response.Content.ReadAsAsync<List<User>>();
return users;
}
else //not 200
{
}
}
}
public HttpClient GetHttpClient(string baseUrl)
{
var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
client.BaseAddress = new Uri(baseUrl);
client.Timeout = Timeout.InfiniteTimeSpan;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
当代码进入 await client.PostAsJsonAsync 时,进程会卡住并且永远不会返回。我可以通过 Postman 进行相同的 api 调用,并且响应在 < 1s 内返回。知道问题可能是什么或如何调试吗?
解决方案
推荐阅读
- swift - 如何在 SwiftUI 中使用 ForEach 仅更改一个核心数据项的切换?
- javascript - 从 NodeJS 中的本地文件路径返回一个 File 对象
- reactjs - 使用样式化组件在 React App 中滚动切换基于主题的图像
- javascript - 在javascript中将Oct转换为字符串中的文本
- angular - 如何在 Angularfire 中实现多所有者文档?
- c++ - CMake 错误“源似乎不包含 CMakeLists.txt”,路径/库连接问题
- android - 如何将数据发送到 Android Studio 中的 Word 文档?
- java - 如何使用没有数组名称的 volley 从 url 中检索数据?
- javascript - jQuery成功后刷新selectpicker选项不起作用
- python - Flask 迁移失败,未加载扩展