Azure Functions 根在升级到 .NET 8 并隔离时抛出双 / 路由异常

问题描述 投票:0回答:1

我有一个正在进行中的 Azure Function 项目,效果非常好。但随着我需要升级到 .NET 8 的电子邮件发出,我还必须迁移到隔离的工作线程 Azure Function 模型。

该项目似乎已经升级得很好,在进行所有其他所需的更改后,我现在可以运行它,但仍然存在一个问题,即我无法在浏览器中访问项目的根目录。

我使用

"AzureWebJobsDisableHomepage": true
 中的 
local.settings.json

在根目录上设置了一个静态页面
"version": "2.0", 
"extensions": { 
                 "http": { "routePrefix": "" } 
              },

host.json
。但现在它抛出以下异常:

Microsoft.AspNetCore.Routing.Patterns.RoutePatternException:路由模板分隔符“/”不能连续出现。它必须由参数或文字值分隔。

从路线中删除

/
可消除异常,但会导致该函数在导航到该地址时不会运行,而仅返回
HTTP 204
结果。

我的静态网络功能简化如下:

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" };
    }
}

有办法绕过这个限制吗?

azure-functions asp.net-core-8
1个回答
0
投票

Microsoft.AspNetCore.Routing.Patterns.RoutePatternException:'路由模板分隔符'/'不能连续出现。它必须由参数或文字值分隔。'

我也遇到了同样的错误:

抛出此错误是因为您已将路由值添加为

/
,Azure 函数会自动在
Route
的值之前添加,这会导致双倍
//

正如我在评论中提到的,您需要在

Route
中提供价值。

这对我有用。

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace FunctionApp2
{
    public class Function1
    {
        private readonly ILogger<Function1> _logger;

        public Function1(ILogger<Function1> logger)
        {
            _logger = logger;
        }

        [Function("Function1")]
        public IActionResult Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route ="test")] HttpRequest req)
        {
            _logger.LogInformation("C# HTTP trigger function processed a request.");
            return new OkObjectResult("Welcome to Azure Functions!");
        }
    }
}

OUTPUT

© www.soinside.com 2019 - 2024. All rights reserved.