简体   繁体   English

如何在异步方法中返回 SignalRMessage?

[英]How to return SignalRMessage inside async method?

Hi I am working on azure function with SignalR.嗨,我正在使用 SignalR 开发 azure 函数。 I have one method in azure function to push some SignalR messages.我在 azure 函数中有一种方法来推送一些 SignalR 消息。 My function looks like below:我的功能如下所示:

[FunctionName("samplefunction")]
public static async Task<SignalRMessage> PushSuccess(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")] DataResponseSuccess DataResponseSuccess,
    ILogger log,
    [SignalR(HubName = "myhub")] IAsyncCollector<SignalRMessage> signalRMessages,
    HttpRequest req)
{
    var data = await Authenticated(req, log);
    if (data == "UnauthorizedResult")
    {
        log.LogInformation($"Authentication failed: at {DateTime.UtcNow}");
    }

    return signalRMessages.AddAsync(
       new SignalRMessage
       {
           UserId = "",
           Target = "myhub",
           Arguments = new[] { DataResponseSuccess }
       });
}

Recently I added await Authenticated(req, log);最近我添加了await Authenticated(req, log); method and made method as async Task<SignalRMessage> .方法并将方法设为async Task<SignalRMessage> After making these changes I started getting below error:进行这些更改后,我开始收到以下错误:

Cannot implicitly convert type System.threading.Task.Task to Microsoft.Azure.WebJobs.Extensions.SignalRService.SignalRMessage.无法将 System.threading.Task.Task 类型隐式转换为 Microsoft.Azure.WebJobs.Extensions.SignalRService.SignalRMessage。

Can someone help me to fix this?有人可以帮我解决这个问题吗? Any help would be appreciated.任何帮助,将不胜感激。

Try this!试试这个!

var message = new SignalRMessage
{
   UserId = "",
   Target = "myhub",
   Arguments = new[] {DataResponseSuccess}
};

signalRMessages.Add(message);

if(signalRMessages.SaveChangesAsync()) return message;

throw new HubException("Failed!");

Maybe可能是

var message = new SignalRMessage
{
   UserId = "",
   Target = "myhub",
   Arguments = new[] {DataResponseSuccess}
};

await signalRMessages.AddAsync(message);
return message;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM