Sas*_*sha 6 .net c# console-application dotnet-httpclient .net-core
我需要一些帮助来找出问题所在.我已经使用了ASP.NET核心,我对此非常熟悉,尽管.NET核心C#似乎在"崩溃"并且在尝试发出异步请求时退出.
我有一个返回系统外部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/");
}
}
Run Code Online (Sandbox Code Playgroud)
这应该可以工作,但是当它到达HC.GetStringAsync时会退出.我也试过在它上面设一个断点,但它实际上并没有运行.
我试图通过使用调用该方法
string Address = await getExternalIP();
Run Code Online (Sandbox Code Playgroud)
任何帮助都很感激,希望我不只是忽略了一些东西.
谢谢!
Mat*_*ero 10
您提出的解决方案并不好.
作为替代方案,请尝试以下方法:
private async Task<string> GetExternalIP()
{
using (HttpClient client = new HttpClient())
return await client.GetStringAsync("https://api.ipify.org/");
}
Run Code Online (Sandbox Code Playgroud)
你的调用方法也应该是异步的:
public async Task CallingMethod()
{
// ...
string address = await GetExternalIP();
// ...
}
Run Code Online (Sandbox Code Playgroud)
它以前不适合你的原因是由于使用async void而不是async Task(通过评论猜到这一点).
async void是一种无法等待的异步方法.这意味着,你只需要打电话就可以忘掉它.您不会捕获任何异常,您将不会获得任何返回值.
async Task是一个等待的异步方法,不返回任何东西.它是void同步方法的异步对应物.此外,由于它是等待的,您还可以捕获异步代码可能出现的任何异常.
| 归档时间: |
|
| 查看次数: |
11398 次 |
| 最近记录: |