在ASP.NET Core中,可以通过设置HttpClient的Timeout属性来设置请求超时时间。而对于动态加载的程序集(控制器),可以在启用MVC之前设置默认HttpClient并设置超时时间。
示例代码如下:
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// 设置默认HttpClient及其超时时间
var defaultHttpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(30) };
services.AddSingleton(defaultHttpClient);
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc();
}
}
然后,在自己的控制器中,可以通过依赖注入来获取默认HttpClient,并在执行调用之前设置请求超时时间。
示例代码如下:
public class MyController : Controller
{
private readonly HttpClient _httpClient;
public MyController(HttpClient httpClient)
{
_httpClient = httpClient;
}
public async Task Index()
{
_httpClient.Timeout = TimeSpan.FromSeconds(60);
// 执行API调用
var result = await _httpClient.GetAsync("http://example.com/api");
// 处理返回结果
if (result.IsSuccessStatusCode)
{
var content = await result.Content.ReadAsStringAsync();
return Content(content);
}
else
{
return BadRequest();
}
}
}