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

Azure SignalR搭配Http Trigger部署后出现授权错误求助

问题排查与解答

WebForms本身不会导致这个未授权错误,问题大概率出在Azure Function部署后的配置或权限设置上,以下是具体排查方向:

  • 检查Azure Function的认证/授权设置
    登录Azure门户,进入目标Function App的「认证」面板:

    • 如果开启了App Service认证(Easy Auth),需确保/api/negotiate路由允许匿名访问;
    • 确认函数代码中HttpTrigger特性指定了AuthorizationLevel.Anonymous,或者在function.json里设置"authLevel": "anonymous",避免协商接口被身份验证拦截。
  • 验证SignalR连接字符串配置

    • 检查Function App应用设置中的Azure__SignalR__ConnectionString,确保和Azure SignalR资源「密钥」页面的连接字符串完全一致,无多余空格或字符;
    • 可在Function App的控制台中执行echo %Azure__SignalR__ConnectionString%(Windows环境)或echo $Azure__SignalR__ConnectionString(Linux环境),验证连接字符串是否正确加载。
  • 核对CORS配置细节

    • 确认CORS允许的源地址与WebForms应用的部署地址完全匹配,必须包含完整协议(http/https)、域名及端口(若有),比如https://your-webforms-app.com而非仅your-webforms-app.com;
    • 生产环境避免使用通配符*,确保允许的源地址精准对应。
  • 检查Negotiate函数实现
    确保函数使用了正确的SignalR绑定且明确允许匿名访问,示例代码如下:

    [FunctionName("Negotiate")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [SignalRConnectionInfo(HubName = "YourHubName")] SignalRConnectionInfo connectionInfo,
        ILogger log)
    {
        return new OkObjectResult(connectionInfo);
    }
    

    重点确认AuthorizationLevel.Anonymous的设置,默认的Function级别授权会要求携带函数密钥才能访问。

  • 查看Azure Function日志
    进入Function App的「日志流」面板,触发/api/negotiate请求,查看具体错误日志(如令牌无效、权限不足等),根据日志信息定位问题根源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 00:35:24