我遇到的问题似乎与使用 HttpClient
异步调用特定 API 相关 - 奇怪的是,它不会一直发生,可以通过刷新页面来解决(有时)一次,有时多次)。
我认为这可能是本地问题,但在 Azure 上托管会产生相同的结果。
原始异常详细信息:
System.Net.Sockets.SocketException (11001): No such host is known at System.Net.Http.ConnectHelper.ConnectAsync(String host, Int32 port, CancellationToken cancellationToken)
我已经检查过:
- API 没有任何限制
- 在浏览器中传递请求网址会返回预期的 JSON 结果
- 刷新页面有时可以解决问题
这似乎是导致问题的方法:
public async Task<List<MoonPhase.Phasedata>> GetPhaseDataAsync(double lat, double lng, int year)
{
string requestUrl = "https://api.usno.navy.mil/moon/phase?year=" + year + "&coords=" + locationService.FormatCoordinates(lat, lng) + "&tz=0";
using (var client = new HttpClient())
{
var content = await client.GetStringAsync(requestUrl);
var moonPhaseObject = JsonConvert.DeserializeObject<MoonPhase.RootObject>(content, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
});
return moonPhaseObject.PhaseData;
}
}
最佳答案
我通过在 15 分钟内尝试多次访问来测试 API(使用 this URI )。一两分钟内似乎出现了 DNS 问题。
如果存在 DNS 故障 ( source ) 等问题,GetStringAsync
方法会引发 HttpRequestException
异常。您可以 try catch 此异常,并在抛出此异常时实现重试机制。
关于C# ASP.NET Core - SocketException : No such host is known,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56793682/