C# 发布到api ASP.NET api时收到错误InvalidOperationException
当我调用一个方法来发布到api并从我的api提供推送通知时,我遇到了一个错误。我收到错误“InvalidOperationException:异步模块或处理程序在异步操作仍挂起时完成”。以下是我发布到api的代码C# 发布到api ASP.NET api时收到错误InvalidOperationException,c#,asp.net,asp.net-web-api,dotnet-httpclient,C#,Asp.net,Asp.net Web Api,Dotnet Httpclient,当我调用一个方法来发布到api并从我的api提供推送通知时,我遇到了一个错误。我收到错误“InvalidOperationException:异步模块或处理程序在异步操作仍挂起时完成”。以下是我发布到api的代码 public static async void postToPushNotifcationAsync(String deviceId, String message, String title) { var fcm = new FCMJsonModel(); var
public static async void postToPushNotifcationAsync(String deviceId, String message, String title)
{
var fcm = new FCMJsonModel();
var fcmNotification = new FCMNotificationModel();
fcmNotification.body = message;
fcmNotification.title = title;
fcmNotification.sound = "sound.caf";
fcm.to = deviceId;
fcm.notification = fcmNotification;
var json = fcm.ToJSON();
var content = new StringContent(json);
content.Headers.ContentType = new
System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
//client.Timeout = TimeSpan.FromMinutes(2);
var cts = new CancellationTokenSource();
cts.CancelAfter(TimeSpan.FromMinutes(1));
var response = await
client.PostAsJsonAsync("https://fcm.googleapis.com/fcm/send", content,
cts.Token);
var responseString = await response.Content.ReadAsStringAsync();
}
我将httpclient声明为全局类变量,因为我必须多次使用此方法
private static readonly HttpClient client = new HttpClient();
您的方法是异步void。请尝试返回一个
任务
,并等待此方法调用的结果,因为如果在任务完成之前返回到客户端,响应
将不再可用。@ps2goat我更改了返回任务的方式,现在返回它,当我调用方法时,我执行var result=wait postToNotification(方法)然后它使我的api成为异步的。WEB API异步可以吗?我仍然收到一个关于错误请求的错误,这个错误以前从未发生过。只要您在返回之前等待调用任何异步函数,异步web api控制器就可以了。你也可以发布控制器代码吗?重新产生问题的最小数量是可以的。如果您有一个不介意发布的堆栈跟踪,这也会有所帮助。@Joy您是否尝试过不指定取消令牌<代码>var响应=等待客户端。PostAsJsonAsync(“https://fcm.googleapis.com/fcm/send“,内容)代码>