【问题标题】:How to use different Connection strings for Azure SignalR Service in Function Apps?如何在函数应用中为 Azure SignalR 服务使用不同的连接字符串?
【发布时间】:2020-08-06 13:19:34
【问题描述】:

好的,所以我们有多个 signalR 服务,我们要做的是在部署代码时,我们希望从自定义配置文件中选择连接字符串,而不是从函数 App 设置中选择。

这是协商功能。请参阅“SignalRConnectionInfo”属性。

[FunctionName("negotiate")]
public IActionResult negotiate(
[HttpTrigger(AuthorizationLevel.Function, "post")]
HttpRequest req,
[SignalRConnectionInfo(HubName = HubName, ConnectionStringSetting = **"Cannot pass dynamic connection string here as it requies a constant"**)]
SignalRConnectionInfo connectionInfo )
{
           
}

我们尝试在 Startup.cs 中添加它

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        IConfigurationRoot config;
       
        builder.Services.AddSignalR().AddAzureSignalR(config["SignalrConnectionString"]);
 
    }
}

它不能以这种方式工作。因为它给出了一个错误

主机服务无效。 Microsoft.Azure.WebJobs.Script.WebHost:以下服务注册与预期服务不匹配: [无效] ServiceType:Microsoft.Extensions.Hosting.IHostedService,Lifetime:Singleton,ImplementationType:Microsoft.Azure.SignalR.HeartBeat 值不能为空。 参数名称:提供者

那么,有没有其他方法可以在函数中使用呢?

【问题讨论】:

  • 你有想过这个吗?
  • 抱歉,我们无法做到这一点,所以最后我们不得不保留应用设置 D 中的连接字符串;
  • 我刚刚提交了这个:github.com/dotnet/aspnetcore/issues/33893
  • 谢谢。请发布解决方案。

标签: azure azure-functions signalr


【解决方案1】:

如果您想从自定义配置文件中选择连接字符串,您应该首先将配置文件添加为配置源。 看 https://docs.microsoft.com/en-us/azure/azure-functions/functions-dotnet-dependency-injection#customizing-configuration-sources

SignalR 函数扩展将从固定位置选择连接,默认为AzureSignalRConnectionString,您可以通过ConnectionStringSetting 对其进行自定义。

如果您有多个 SignalR 服务实例,您可能希望使用多个端点支持。目前只有Persistent服务传输类型支持多个SignalR实例,即函数会与所有SignalR实例建立WebSocket连接,你可以自定义路由逻辑。这种行为不同于在函数启动时选择一个实例。见https://github.com/Azure/azure-functions-signalrservice-extension/blob/dev/docs/sharding.md

如果不想连接所有 SignalR 实例,可以将每个连接字符串配置在一个文件中,并选择一个文件作为将在函数启动时添加的配置源。

【讨论】:

    猜你喜欢
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 2019-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多