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