我有以下 C# 代码,用于向用户发送消息:
[Function(nameof(SendToUser))]
[SignalROutput(HubName = "chat", ConnectionStringSetting = "SignalRConnection")]
public static SignalRMessageAction SendToUser([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
using var bodyReader = new StreamReader(req.Body);
return new SignalRMessageAction("newMessage")
{
Arguments = new[] { bodyReader.ReadToEnd() },
UserId = "userToSend",
};
}
当使用输出表绑定而不是azure存储帐户的SDK触发此signalR函数时,我还想将对象的json有效负载保存到Azure存储帐户的表中。是否可以将
SignalROutput
与 TableOutput
结合起来,使上面的代码看起来像下面的模式?
public class MyTableData : Azure.Data.Tables.ITableEntity
{
public string Text { get; set; }
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public DateTimeOffset? Timestamp { get; set; }
public ETag ETag { get; set; }
}
[Function(nameof(SendToUser))]
[SignalROutput(HubName = "chat", ConnectionStringSetting = "SignalRConnection")]
[TableOutput("OutputTable", Connection = "AzureWebJobsStorage")]
public static object[] SendToUser([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req)
{
using var bodyReader = new StreamReader(req.Body);
return
[
new SignalRMessageAction("newMessage")
{
Arguments = new[] { bodyReader.ReadToEnd() },
UserId = "userToSend",
},
new MyTableData()
{
Text = "Test text",
PartitionKey = "key",
RowKey = "myrowkey",
Timestamp = DateTime.Now,
ETag = "tag"
}
];
}
同一个方法不可能同时拥有两个输出属性,但本文介绍了如何实现多个 Azure Functions 输出的目标。