我有一个正在进行中的 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" };
}
}
有办法绕过这个限制吗?
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
: