У меня есть приложение-функция Azure с функцией, которая запускается по триггеру больших двоичных объектов. Я доказал, что эта функция может запускаться через портал Azure и реагирует на этот триггер BLOB-объектов без проблем ... или, по крайней мере, так и было.
Теперь, когда я добавил функциональность, которая использует EF Core (2.2.4), он дает мне следующую ошибку, как при локальной отладке, так и при публикации в Azure:
Microsoft.Azure.WebJobs.Host: Ошибка индексации метода «ParseThings». Microsoft.Azure.WebJobs.Host: невозможно связать параметр context с типом AvastusContext. Убедитесь, что параметр Type поддерживается привязкой. Если вы используете привязки расширений (например, хранилище Azure, ServiceBus, таймеры и т. Д.), Убедитесь, что вы вызвали метод регистрации расширений в вашем коде запуска (например, builder.AddAzureStorage (), builder.AddServiceBus ( ), builder.AddTimers () и т. д.).
У меня есть класс Startup
, как указано в документации по приложению-функции Azure здесь , и я следовал их примеру до буквы, кроме следующей строки вместо их настроенных примеров служб:
[assembly: FunctionsStartup(typeof(AvstFunctionApp.Startup))]
namespace AvstFunctionApp
{
public class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddDbContext<AvastusContext>(options => options.UseSqlServer(Environment.GetEnvironmentVariable("AvastusDb")));
}
}
}
И начало моей функции:
public static class ParseThings
{
[FunctionName("ParseThings")]
public static void Run([BlobTrigger("summaries/{name}", Connection = "StorageConnectionString")]Stream myBlob, string name, ILogger log, AvastusContext context)
Я могу подтвердить, что строка AddDbContext
получает удар в отладчике, так что, возможно, здесь за кадром происходит какая-то ошибка, или я делаю что-то невероятно глупое.
Вещи, которые я пробовал, которые не сработали, включают:
- Добавление
.BuildServiceProvider(true)
в строку AddDbContext
- Использование
WebJobsStartup
вместо недавно объявленной FunctionsStartup
- Понижение до .NET Core 2.2.0
- Изменение класса Function и
Run
метода со статического на экземпляр
- Исправление некорректного пространства имен введенного
AvastusContext
Стоит также отметить, что в этом проекте приложения функций есть две другие функции, у которых, похоже, нет серьезных проблем, и я смог заставить работать инъекцию зависимостей, используя аналогичный метод с EF Core для другого ( ASP.NET Core MVC) проект в этом решении.
Заранее благодарю за любую помощь, которую кто-либо может оказать!
P.S. Я нахожу невероятно странным, что в более поздних версиях .NET Core, приложений-функций Azure и EF Core более поздних версий ничего не описывало эту ситуацию, и это заставляет меня думать, что это может быть простой ошибкой. Надеюсь, что нет.