.NET 核心的异步请求
Async requests with .NET core
我需要一点帮助来找出我的问题。我使用过 ASP.NET 核心,我对此相当熟悉,尽管 .NET 核心 C# 似乎是 "crashing" 并在尝试发出我的异步请求时退出。
我有一个方法returns系统的外部IP
private async Task<string> getExternalIP()
{
using (System.Net.Http.HttpClient HC = new System.Net.Http.HttpClient())
{
return await HC.GetStringAsync("https://api.ipify.org/");
}
}
这应该可行,但它在到达 HC.GetStringAsync 时退出。我也试过在它上面放一个断点,但它实际上并没有 运行.
我正在尝试使用
调用该方法
string Address = await getExternalIP();
感谢任何帮助,希望我没有忽略某些东西。
谢谢!
您提出的解决方案一点也不好。
- 是同步的
- 可能导致死锁
作为替代方法,试试这个方法:
private async Task<string> GetExternalIP()
{
using (HttpClient client = new HttpClient())
return await client.GetStringAsync("https://api.ipify.org/");
}
你的调用方法也应该是异步的:
public async Task CallingMethod()
{
// ...
string address = await GetExternalIP();
// ...
}
之前它对您不起作用的原因是使用 async void
而不是 async Task
(根据评论猜测)。
async void
是异步方法,不能等待。这意味着,您只需调用它而忘记它。您不会捕获任何异常,您不会获得任何 return 值。
async Task
是一个可等待的异步方法,它不会 return 任何东西。它是 void
同步方法的异步对应物。此外,由于它是可等待的,您还可以捕获异步代码中可能出现的任何异常。
我需要一点帮助来找出我的问题。我使用过 ASP.NET 核心,我对此相当熟悉,尽管 .NET 核心 C# 似乎是 "crashing" 并在尝试发出我的异步请求时退出。
我有一个方法returns系统的外部IP
private async Task<string> getExternalIP()
{
using (System.Net.Http.HttpClient HC = new System.Net.Http.HttpClient())
{
return await HC.GetStringAsync("https://api.ipify.org/");
}
}
这应该可行,但它在到达 HC.GetStringAsync 时退出。我也试过在它上面放一个断点,但它实际上并没有 运行.
我正在尝试使用
调用该方法string Address = await getExternalIP();
感谢任何帮助,希望我没有忽略某些东西。
谢谢!
您提出的解决方案一点也不好。
- 是同步的
- 可能导致死锁
作为替代方法,试试这个方法:
private async Task<string> GetExternalIP()
{
using (HttpClient client = new HttpClient())
return await client.GetStringAsync("https://api.ipify.org/");
}
你的调用方法也应该是异步的:
public async Task CallingMethod()
{
// ...
string address = await GetExternalIP();
// ...
}
之前它对您不起作用的原因是使用 async void
而不是 async Task
(根据评论猜测)。
async void
是异步方法,不能等待。这意味着,您只需调用它而忘记它。您不会捕获任何异常,您不会获得任何 return 值。
async Task
是一个可等待的异步方法,它不会 return 任何东西。它是 void
同步方法的异步对应物。此外,由于它是可等待的,您还可以捕获异步代码中可能出现的任何异常。