You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7隔离进程Azure Functions SignalR输出绑定报错:仅支持一个绑定

.NET 7 Isolated Azure Functions SignalR输出绑定报错排查与解决

报错信息

System.InvalidOperationException: 使用绑定到'$return'的输出绑定时仅支持一个输出绑定,共发现2个绑定。

问题原因

在.NET Isolated模式的Azure Functions中,当通过**函数返回值($return)**绑定输出时,框架会自动将返回值识别为一个输出绑定;同时你显式添加了[SignalROutput]特性,导致系统检测到两个输出绑定,触发冲突。

解决方法

提供两种可行修复方案:

方案1:移除显式的SignalROutput特性

返回的SignalRMessageAction类型会被框架自动识别为SignalR输出绑定,无需额外添加特性注解,修改后代码如下:

[Function("broadcast")]
public SignalRMessageAction Broadcast([HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req, FunctionContext functionContext)
{
    using var bodyReader = new StreamReader(req.Body);
    return new SignalRMessageAction("brick")
    {
        Arguments = new[] { bodyReader.ReadToEnd() },
    };
}

方案2:使用输出参数替代返回值绑定

若需保留[SignalROutput]特性,可将SignalR输出定义为函数的输出参数,而非通过返回值绑定,代码示例:

[Function("broadcast")]
public void Broadcast(
    [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req,
    [SignalROutput(HubName = "brick_broadcaster", ConnectionStringSetting = "signalrConnection")] out SignalRMessageAction signalrOutput,
    FunctionContext functionContext)
{
    using var bodyReader = new StreamReader(req.Body);
    signalrOutput = new SignalRMessageAction("brick")
    {
        Arguments = new[] { bodyReader.ReadToEnd() },
    };
}

补充说明

.NET Isolated模式的Functions采用POCO绑定机制,当函数返回特定绑定类型(如SignalRMessageAction)时,框架会自动关联对应输出绑定配置,重复添加特性注解会导致绑定冲突。

内容的提问来源于stack exchange,提问作者derodevil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 03:09:56