Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发布到api ASP.NET api时收到错误InvalidOperationException_C#_Asp.net_Asp.net Web Api_Dotnet Httpclient - Fatal编程技术网

C# 发布到api ASP.NET api时收到错误InvalidOperationException

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

当我调用一个方法来发布到api并从我的api提供推送通知时,我遇到了一个错误。我收到错误“InvalidOperationException:异步模块或处理程序在异步操作仍挂起时完成”。以下是我发布到api的代码

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“,内容)