【发布时间】:2019-07-13 16:55:25
【问题描述】:
要求:创建可以注入 Entity Framework 上下文的 Azure 函数
使用依赖注入到Run 方法。
这是我的Startup 课程
[assembly: WebJobsStartup(typeof(Startup))]
namespace MessagesToSqlDbFuncApp
{
internal class Startup : IWebJobsStartup
{
public void Configure(IWebJobsBuilder builder) =>
builder.AddDependencyInjection<ServiceProviderBuilder>();
}
}
这里是ServiceProviderBuilder类
public class ServiceProviderBuilder : IServiceProviderBuilder
{
public IServiceProvider Build()
{
IConfigurationRoot config = new ConfigurationBuilder()
.SetBasePath(Environment.CurrentDirectory)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
var connectionString = config.GetConnectionString("SqlConnectionString");
var services = new ServiceCollection();
services.AddDbContext<DataContext>(options => options.UseSqlServer(connectionString));
return services.BuildServiceProvider(true);
}
}
这是我的功能
[FunctionName("MessagesToSqlDbFuncApp")]
public static async Task Run([BlobTrigger("messagecontainer/{name}", Connection = "AzureWebJobsStorage")]
Stream myBlob,
string name,
ILogger log,
[Inject] DataContext myContext)
{
}
这是运行函数时抛出的错误
[2/20/2019 4:25:10 AM] 错误索引方法“MessagesToSqlDbFuncApp” [2/20/2019 4:25:10 AM] Microsoft.Azure.WebJobs.Host:错误索引方法“BlobQCMessagesToSqlDbFuncApp”。 Microsoft.Azure.WebJobs.Host:无法将参数“myContext”绑定到类型 DataContext。确保绑定支持参数类型。如果您正在使用绑定扩展(例如 Azure 存储、ServiceBus、计时器等),请确保您已在启动代码中调用了扩展的注册方法(例如 builder.AddAzureStorage()、builder.AddServiceBus( )、builder.AddTimers() 等)。
这里是 nuget 包和版本
- Azure 函数版本:2
- Visual Studio : 2017
- Microsoft.EntityFrameworkCore:2.1.4
- Microsoft.EntityFrameworkCore.Design:2.1.4
- Microsoft.EntityFrameworkCore.SqlServer:2.1.4
- Microsoft.Extensions.DependencyInjection:2.2.0
- Microsoft.NET.Sdk.Functions:1.0.24
- Microsoft.NETCore.App:2.1.0
重要提示:调试器未命中Startup 类!。如何初始化startup 类?
【问题讨论】:
-
我已经打开了一个关于相同(我猜是相同)问题的问题github.com/Azure/azure-webjobs-sdk/issues/…
-
有任何进展,您能接受一个有用的解决方案还是简单地发布您的解决方案供其他人参考?
-
标记了答案
标签: c# azure entity-framework-core azure-functions autofac