c# - 如何从路由中删除 "api"- Azure Functions v3 - host.json routePrefix 空字符串不起作用

标签 c# dependency-injection configuration azure-functions

我正在尝试删除 URL 中的“api”前缀。

这是我的host.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

我还缺少什么或做错了什么?

旁白:如果我注释掉这一行,那么带有 api 的 URL 也有效。
builder.Services.AddSingleton(configRoot);

最佳答案

我的问题是这一行:

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

我们的项目中有这行代码,因为我们将 IConfiguration 直接传递给我们的类。然而,我们实际上并不需要它,因为我们现在使用 IOptions 来传递我们的类型化配置设置。

仅供引用:这些是 nuget 包

enter image description here

关于c# - 如何从路由中删除 "api"- Azure Functions v3 - host.json routePrefix 空字符串不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62011829/

相关文章:

c# - 无法降级 NuGet 包

php - 如何存储 zend、phing 和 phpunit 的共享配置?

java - 使用 XML 配置禁用 Websocket 中的 CSRF 保护

configuration - 如何在没有 Redis 且没有自动配置的情况下使用 spring-boot 配置 spring-session 以使用另一个数据库存储

java - 如何注入(inject)可变数量的具有依赖关系的相似组件?

c# - 配置 Postsharp 日志记录工具包

c# - 错误 CS0246 : The type or namespace name `HtmlAgilityPack' could not be found

c# - 从更新面板中的表中获取动态添加的文本框的值

c# - MVC 3 beta + Dependency Resolver + Unity = 有​​问题

c# - 使用 CaSTLe 注入(inject)具有非通用实现的开放通用接口(interface)