【问题标题】:Dependency Injection failing in Azure function once deployed but works locally依赖注入在 Azure 功能中失败,一旦部署但在本地工作
【发布时间】:2020-03-28 10:58:37
【问题描述】:

我有一个类,它有一个以SqlConnection 作为参数的公共构造函数。

private readonly SqlConnection _sqlConnection;

public Sample(SqlConnection sqlConnection)
{
    _sqlConnection = sqlConnection;
}

Startup 文件中我正在尝试做 DI

var sqlConnection = new SqlConnection(Environment.GetEnvironmentVariable("AzureSQLConnection"));

builder.Services.AddSingleton<SqlConnection>(sqlConnection);

它在本地运行,但在部署到 Azure 时失败并出现错误

System.InvalidOperationException:无法解析服务类型 尝试激活时出现“System.Data.SqlClient.SqlConnection” '测试.样品.样品'。在 Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp,Type type,Type requiredBy,Boolean isDefaultParameterRequired) at lambda_method(闭包,IServiceProvider,Object[])在 Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IServiceProvider 服务提供商)在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 37 在 Microsoft.Azure.WebJobs.Host.Executors.DefaultJobActivator.CreateInstance[T](IFunctionInstanceEx 函数实例)在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\DefaultJobActivator.cs : 32 在 Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory1.<>c__DisplayClass1_1.<.ctor>b__0(IFunctionInstanceEx i) at C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 20 at Microsoft.Azure.WebJobs.Host.Executors.ActivatorInstanceFactory1.Create(IFunctionInstanceEx 函数实例)在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\ActivatorInstanceFactory.cs : 26 在 Microsoft.Azure.WebJobs.Host.Executors.FunctionInvoker`2.CreateInstance(IFunctionInstanceEx 函数实例)在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionInvoker.cs : 44 在 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.ParameterHelper.Initialize() 在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs : 846 异步 Microsoft.Azure.WebJobs.Host.Executors.FunctionExecutor.TryExecuteAsyncCore(IFunctionInstanceEx 函数实例,CancellationToken 取消令牌)在 C:\projects\azure-webjobs-sdk-rqm4t\src\Microsoft.Azure.WebJobs.Host\Executors\FunctionExecutor.cs : 117

【问题讨论】:

  • 这很奇怪,因为您确实在服务集合中注册了它。
  • 找到解决方案了吗?

标签: c# dependency-injection azure-function-app


【解决方案1】:

尝试在 Startup 和 Test.Sample.Sample classes 中检查 SqlConnection 的命名空间。问题是有两个名称几乎相同的类(Microsoft.Data.SqlClient.SqlConnectionSystem.Data.SqlClient.SqlConnection)。 两个类中的类型必须相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多