当前位置: 首页 > 知识库问答 >
问题:

. Net Core Azure函数-无法绑定

蒙化
2023-03-14

我要移民到。标准到。核心,但我面临一个问题:

Microsoft.Azure.WebJobs.Host:索引方法FunctionName错误。Microsoft.Azure.WebJobs.Host:无法将参数MyService绑定到IMyService类型。请确保绑定支持参数Type。如果使用绑定扩展(例如Azure存储、ServiceBus、计时器等),请确保已在启动代码(例如builder.AddAzureStorage()、builder.AddServiceBus()、builder.AddTimers()等)中调用扩展的注册方法。

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

 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));
        }
    }

这些目标是:

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 核心的版本,但没有任何成功,我还能做些什么来解决依赖关系问题?

编辑-未调用启动类。

共有1个答案

孙玺
2023-03-14

我找到了解决办法,

安装金块AzureFunctions.Autofac

在函数类中添加< code >[dependencyinijectionconfig(type of(Startup))]。

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

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

在初始化时:

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

  }
 类似资料:
  • 我制作了一个Azure函数(http触发器),并使用Visual Studio 2019将其部署在门户中。 该函数工作正常,我现在将添加一个绑定到我的CosmosDB。我导航到我的函数,然后单击“集成”。现在我看到了触发器、函数以及输入和输出绑定。 我应该可以在这里添加一个新的输入绑定。但我没有“添加”按钮。我做错了什么?

  • Message Message,string lockToken,MessageReceiver,MessageReceiver,ILogger日志) 使用MessageReceiver或底层接口时,我会得到以下错误: Microsoft.Azure.WebJobs.Host:无法将参数“Message Receiver”绑定到类型“Microsoft.ServiceBus.Messaging.M

  • 当将对象方法作为回调进行传递,例如传递给 setTimeout,这儿会存在一个常见的问题:“丢失 this”。 在本章中,我们会学习如何去解决这个问题。 丢失 “this” 我们已经看到了丢失 this 的例子。一旦方法被传递到与对象分开的某个地方 —— this 就丢失。 下面是使用 setTimeout 时 this 是如何丢失的: let user = { firstName: "Joh

  • 我在《快速入门指南》中创建了基本的Azure功能。根据教程,这个默认函数应该可以立即工作,但我遇到了一个错误。 功能体: 错误消息: 函数($HttpTriggerCSharp1)错误:Microsoft。蔚蓝色的网络作业。主机:错误索引方法的函数。HttpTriggerCSharp1’。微软蔚蓝色的网络作业。主机:无法将参数“u return”绑定到类型HttpResponseMessage

  • 我在吸毒。net core Azure函数,没有问题,代码如下。 但是,当我使用.net框架创建Azure函数应用时,它会抛出以下错误。 我尝试了所有可能的谷歌解决方案。这个错误显然是由于nuget和library导致的,因为相同的代码可以很好地用于v2.net核心函数应用程序。 我甚至也试过这个: 如果我把它作为guid或字符串,反之亦然,它会给出错误: 错误索引方法“函数1”。“RunAsyn