.NET 8隔离模式Azure Functions根路由双斜杠异常及解决
.NET 8 Azure Functions隔离模式根路径HTTP触发器问题解决
问题场景
之前基于.NET 6进程内模式的Azure Functions项目运行正常,升级到.NET 8切换为隔离工作者模式后,无法正常访问项目根路径。此前通过以下配置实现根路径静态页面:
- 在
local.settings.json中设置"AzureWebJobsDisableHomepage": true - 在
host.json中配置:{ "version": "2.0", "extensions": { "http": { "routePrefix": "" } } }
切换到隔离模式后,使用如下根路径触发器代码时抛出异常:
public class StaticWebFunctions { [Function(nameof(WebRoot))] public IActionResult WebRoot([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "/")] HttpRequest request) { return new ContentResult() { Content = "Testing root functionality, pun intended" }; } }
异常信息:
Microsoft.AspNetCore.Routing.Patterns.RoutePatternException: 路由模板分隔符'/'不能连续出现,必须用参数或文字值分隔。
尝试移除路由中的'/'后,访问时仅返回HTTP 204,函数不执行;将路由改为~/则导致无限循环,中断请求会抛出TaskCancelledException。
解决方法
根据微软迁移文档,问题根源在于隔离模式下HTTP触发器的配置方式:将Program.cs中原本调用的.ConfigureFunctionsWebApplication()替换为.ConfigureFunctionsWorkerDefaults(),即可消除双斜杠限制,根路径路由能正常工作。
内容的提问来源于stack exchange,提问作者Perry
相关产品推荐
相关产品推荐

