【问题标题】:Azure Functions and Dependency InjectionAzure 函数和依赖注入
【发布时间】:2020-03-09 19:00:56
【问题描述】:

我的 Azure Function v2 项目中有以下 Startup 类:

[assembly: FunctionsStartup(typeof(AzureAppDomainRegistration.Startup))]
namespace AzureAppDomainRegistration
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var connString = System.Configuration.ConfigurationManager.AppSettings["ConnectionStrings:DataContext"];

            //var connString = config["ConnectionStrings:DataContext"];
            builder.Services.AddDbContext<DataContext>(options => options
                .UseLazyLoadingProxies()
                .UseSqlServer(connString));

            builder.Services.AddTransient<IActionsRegistrationInfo, EfActionsRegistrationInfo>();
        }
    }
}

和功能:

public class Function100_CheckEmail
{
    readonly IActionsRegistrationInfo _actionsRegistrationInfo;

    public Function100_CheckEmail(IActionsRegistrationInfo actionsRegistrationInfo)
    {
        _actionsRegistrationInfo = actionsRegistrationInfo;
    }

    [FunctionName("Function100_CheckEmail")]
    //public static IActionResult Run(
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
        [Queue("email-message-admin-confirmation", Connection = "StorageConnectionString")]CloudQueue outputQueue,
        ExecutionContext context,
        ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");

但是在执行此函数时,我在 Azure 门户上收到以下错误:

没有 DI 它可以正常工作。怎么了?

.NET Core 2.2

添加: 我尝试远程调试器,发现Startup 文件的Configure 方法有ArgumentNullException 的异常(由App Insights 记录),但没有详细信息。会是什么?

【问题讨论】:

  • 你用的是什么包?

标签: azure dependency-injection .net-core azure-functions


【解决方案1】:

所以为了在 Azure 函数中获取环境变量,你需要使用

var connStr =   Environment.GetEnvironmentVariable("ConnectionStrings:SQLConnectionString", EnvironmentVariableTarget.Process);

还要检查local.settings.json 中是否有类似这样的值

{
  "IsEncrypted": false,   
  "Values": {
    "AzureWebJobsStorage": "<connection string>", 
    "AzureWebJobsDashboard": "<connection string>" 
  },
  "Host": {
    "LocalHttpPort": 7071, 
    "CORS": "*" 
  },
  "ConnectionStrings": {
    "SQLConnectionString": "Value"
  }
}

参考:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2021-06-03
    • 1970-01-01
    • 2020-01-19
    • 2018-06-28
    相关资源
    最近更新 更多