在 C# 中人为地创建连接超时错误?
Artificially create a connection timeout error in C#?
我想在我的应用程序中调用外部 Api,在调用 Api 之后,如果超时异常抛出,那么我的应用程序 returns 结果。现在我想模拟这种情况。
这是我的代码:
public string Sample()
{
try
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response =
client.GetAsync("ExternalApi").GetAwaiter().GetResult();
//...
}
}
catch (Exception e)
{
return ((HttpRequestException) e).StatusCode == HttpStatusCode.RequestTimeout ? "timeOut" : "Error";
}
return "Success";
}
如果我在 ExternalApi 中抛出 TimeoutException,那么在 Sample 方法中我会得到内部服务器错误。
如何创建人为超时异常?
我最近使用 Task 方法替代了 Tracert,以便在出现问题时发送 DNS 信息请求时获得异常。我猜你应该使用 Task<>。看看主要的 MSDN 解释:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=net-5.0
另外,我认为您会欣赏我如何在自己的代码中检查成功或异常。查看布尔 DNS 检查中的代码:
An alternative class for Tracert with DNS feature
HttpClient class 有一个 Timeout 属性。
所以试试这个。
using (HttpClient client
= new HttpClient(){Timeout=new TimeSpan(0,5,0)})
暂停五分钟。
如果超时到期,您将收到 WebException。
为此,我终于使用了一个名为 'Hercules Setup Utility' 的应用程序。此应用程序侦听 'Tcp Server' 中的 端口 并收到您的请求但根本不响应。执行此应用程序并监听端口后,您必须在应用程序中设置类似 localhost:port 的内容。你会得到一个超时异常。
HttpClient class 具有超时属性。或者您可以使用一些应用程序来创建超时,例如 Hercules Setup Utility
我想在我的应用程序中调用外部 Api,在调用 Api 之后,如果超时异常抛出,那么我的应用程序 returns 结果。现在我想模拟这种情况。 这是我的代码:
public string Sample()
{
try
{
using (HttpClient client = new HttpClient())
{
HttpResponseMessage response =
client.GetAsync("ExternalApi").GetAwaiter().GetResult();
//...
}
}
catch (Exception e)
{
return ((HttpRequestException) e).StatusCode == HttpStatusCode.RequestTimeout ? "timeOut" : "Error";
}
return "Success";
}
如果我在 ExternalApi 中抛出 TimeoutException,那么在 Sample 方法中我会得到内部服务器错误。 如何创建人为超时异常?
我最近使用 Task 方法替代了 Tracert,以便在出现问题时发送 DNS 信息请求时获得异常。我猜你应该使用 Task<>。看看主要的 MSDN 解释:
https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.task?view=net-5.0
另外,我认为您会欣赏我如何在自己的代码中检查成功或异常。查看布尔 DNS 检查中的代码:
An alternative class for Tracert with DNS feature
HttpClient class 有一个 Timeout 属性。
所以试试这个。
using (HttpClient client
= new HttpClient(){Timeout=new TimeSpan(0,5,0)})
暂停五分钟。
如果超时到期,您将收到 WebException。
为此,我终于使用了一个名为 'Hercules Setup Utility' 的应用程序。此应用程序侦听 'Tcp Server' 中的 端口 并收到您的请求但根本不响应。执行此应用程序并监听端口后,您必须在应用程序中设置类似 localhost:port 的内容。你会得到一个超时异常。
HttpClient class 具有超时属性。或者您可以使用一些应用程序来创建超时,例如 Hercules Setup Utility