我有一个 C# Azure Function 项目,具有多种功能。
其中一项功能是提供一些 HTML 内容。目前可以在/api/home 访问该功能。但是,我希望针对根/URL 触发它。
我在我的项目中添加了一个 proxies.json 文件:
{
"Home": {
"matchCondition": {
"methods": ["GET"],
"route": "/"
},
"backendUri": "https://localhost:7071/api/home"
}
}
Run Code Online (Sandbox Code Playgroud)
但这仍然没有效果 - 它继续提供默认的 Azure Fucntions 网页。
有什么办法可以做到这一点吗?
Azure Functions V4 的更好解决方案。
\ntl;dr原来你可以将函数路由设置为“/”。您只需要正确的设置。
\n正如其他人所指出的,代理在 v4 中被禁用。然后又添加回来,但它们仍然被弃用。Microsoft 建议使用 Azure API 管理,但这对于这个用例来说太复杂了。
\n这个与 V3 向后兼容的解决方案是我从Julian H\xc3\xbcppauff 的一篇优秀博客文章中获得的。
\n首先,(这对我来说是缺失的部分)您必须关闭默认的 Azure Functions 主页。您可以在应用程序设置中执行此操作。您必须设置AzureWebJobsDisableHomepage为true. 在 Azure 主机上,您可以在Azure Functions 应用程序设置中执行此操作。
在本地计算机上,为了进行测试,您可以像这样添加设置local.settings.json。
{\n "IsEncrypted": false,\n "Values": {\n "AzureWebJobsDisableHomepage": "true"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n接下来,正如 @Gangula 提到的,您关闭函数的默认“/api”前缀。添加routePrefix到您的host.json如下:
{\n "version": "2.0",\n "extensions": {\n "http": {\n "routePrefix": ""\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n最后,创建一个函数Route = "/"。您可以在该函数中执行任何您想要的操作 - 提供默认文本、301 重定向到不同的 url 等。
我希望这可以帮助人们在 V4 后解决这个问题!
\n恐怕你不能使用根路径来访问这个功能,因为https://localhost:7071/始终是Azure函数的默认页面:
下面是我的验证步骤,我将函数的路径改为https://localhost:7071/,但仍然显示默认页面Azure function app。
默认情况下,您的 azure 函数的路由是localhost:7071/api/{functionName}
现在你一定已经注意到,几乎所有的功能路由都包含/api/在路由中。如果您想更改它,您可以使用以下命令修改内容来更改它host.json.
你需要添加"extensions": { "http": { "routePrefix": "" } }在 host.json 中添加:
{\n "version": "2.0",\n "logging": {\n "applicationInsights": {\n "samplingSettings": {\n "isEnabled": true,\n "excludedTypes": "Request"\n }\n }\n },\n "extensions": { "http": { "routePrefix": "" } }\n}\nRun Code Online (Sandbox Code Playgroud)\n现在,您的路线可能如下所示:
\nlocalhost:7071/{functionName}\nRun Code Online (Sandbox Code Playgroud)\n您还需要将Route代码中的设置为""。
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = "")] HttpRequest req,\nRun Code Online (Sandbox Code Playgroud)\n\n当前路由应该满足您的要求\xef\xbc\x9a
\n\n但是用这个路径访问这个函数还是失败,所以我认为将Azure函数的路径设置为根路径是无效的,不能用它来访问你的Azure函数。
\n如果部署到Azure portal,可以尝试添加"AzureWebJobsDisableHomepage ": true禁用app settingsAzure主页的功能。我在本地测试了一下,好像不行。Azure portal似乎有效。
| 归档时间: |
|
| 查看次数: |
3742 次 |
| 最近记录: |