【问题标题】:.Net Core Azure Function - Cannot bind.Net Core Azure 函数 - 无法绑定
【发布时间】:2023-04-09 12:08:01
【问题描述】:

我是从 .standard 迁移到 .core,但我遇到了一个问题:

Microsoft.Azure.WebJobs.Host:索引方法错误 '函数名'。 Microsoft.Azure.WebJobs.Host:无法绑定 要键入的参数“MyService” 我的服务。确保支持参数类型 通过绑定。如果您使用绑定扩展(例如 Azure Storage、ServiceBus、Timers 等)确保你已经调用了 启动代码中扩展的注册方法(例如 builder.AddAzureStorage(), builder.AddServiceBus(), builder.AddTimers() 等)。

我正在使用带有 autofac 的启动来解决依赖关系

 public sealed class Startup : IExtensionConfigProvider
    {
        private static IContainer container;

        public void Initialize(ExtensionConfigContext context)
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<MyService>().As<IMyToCoreService>().InstancePerDependency();

            container = builder.Build();

            context.AddBindingRule<InjectAttribute>().BindToInput<dynamic>(inject => container.Resolve(inject.Type));
        }
    }

NuGet 是:

Autofac - 4.9.0
Microsoft.Azure.WebJobs.Extensions.Storage - 3.0.3
Microsoft.NET.Sdk.Functions 1.0.24

以及功能:

public static async Task RunAsync([QueueTrigger(ASERVICETOGETANAME)]string blobInformation,
            [Inject(typeof(IMyService))]IMyService myService, 
            ILogger log, CancellationToken cancellationToken)

我尝试降级nuget和.net core的版本,但没有成功,我还能做些什么来解决依赖问题?

EDIT - Startup 类没有被调用。

【问题讨论】:

  • 我在这样做时遇到了很多问题,创建一个新的空白 .net 核心函数应用程序并复制您的代码。从表面上看,这似乎很乏味,但从长远来看,它似乎结束得更快。
  • @MurrayFoxcroft 我做了:/,我认为它与 sdk.funtions 版本有关,因为 QueueTrigger 已迁移到单独的库
  • 您确实需要全面升级。

标签: c# asp.net-core dependency-injection .net-core azure-functions


【解决方案1】:

我找到了解决办法,

安装金块AzureFunctions.Autofac

在你的函数类中添加[DependencyInjectionConfig(typeof(Startup))]

在启动类上,构造一个传递字符串的构造:

public Startup(string functionName)
{
    Initialize(functionName);
}

关于初始化:

 public void Initialize(string functionName)
 {
      DependencyInjection.Initialize(builder =>
      {
       // your injections
      }, functionName);

  }

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2021-08-16
    • 2023-03-07
    • 2018-11-02
    • 2021-11-30
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多