Как удалить "api" из маршрута - Azure Функции v3 - host. json пустая строка routePrefix не работает - PullRequest
1 голос
/ 26 мая 2020

Я пытаюсь удалить префикс «api» в своем URL.

Это мой хост. json.

{
  "version": "2.0",
  "extensions":   {
    "http":     {
      "routePrefix": "" 
    }
  }
}

ПРИМЕЧАНИЕ: если я изменю "routePrefix": "foo", это сработает. Кажется, проблема возникает из-за string.empty.

Это мой код startup.cs:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {

        var serviceProvider = builder.Services.BuildServiceProvider();
        var existingConfig = serviceProvider.GetService<IConfiguration>(); 

        var config = new ConfigurationBuilder()
            .AddEnvironmentVariables()
            .AddConfiguration(existingConfig) 
            .Build();

        builder.Services.AddSingleton<IConfiguration>(configRoot);
        services.BuildServiceProvider(true);

    }
}

Обратите внимание, что я уже добавляю существующую конфигурацию в конструктор, как указано документация здесь:

https://github.com/Azure/azure-functions-host/issues/4363

https://github.com/Azure/azure-functions-durable-extension/issues/894

И эта проблема, кто-то другой также сообщил о том же проблема как у меня. Но билет закрыт ...

https://github.com/Azure/azure-functions-host/issues/5466

Что еще я упускаю или делаю не так?

кроме: если я закомментирую эта строка, то URL с api также работает. builder.Services.AddSingleton (конфигурация Root);

1 Ответ

0 голосов
/ 29 мая 2020

Моя проблема заключается в этой строке:

builder.Services.AddSingleton<IConfiguration>(configRoot);

У нас была эта строка кода в нашем проекте, потому что мы передавали IConfiguration напрямую нашим классам. Однако на самом деле нам это не нужно, так как теперь мы используем IOptions для передачи наших типизированных параметров конфигурации.

FYI: это пакеты nuget

enter image description here

...