【发布时间】: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