我有一个Azure Function应用程序,它不断地为所有端点返回404。API配置似乎是正确的,所以问题出在函数本身。它一直工作正常,直到最近。我唯一注意到的奇怪的是,当我使用Kudu
比较文件夹结构时,一个工作的函数应用程序有一个/home/site/wwwroot
目录,
但我的坏功能应用程序不:
我想这与我的问题有关。我试图手动创建文件夹,但收到409错误。
该代码是用C#编写的,使用Azure管道进行部署以及使用手动进行部署都不起作用
func azure functionapp publish <function app name> --dotnet
我注意到应用程序设置WEBSITE_CONTENTSHARE
被设置为一个最初只在暂存插槽上的值,类似于staging-asdf-fdsa
,这是否会导致问题?我尝试更改该值并重新启动函数应用程序,但似乎没有任何影响
看起来我走的是正确的道路吗?有人知道为什么这个文件夹会消失吗?我想知道当我在暂存插槽和生产插槽之间进行交换时,我的应用程序设置是否会破坏我的功能应用程序。
如果有任何额外的信息,将有助于请让我知道,我将编辑这个问题与它。
更新
通过将WEBSITE_RUN_FROM_PACKAGE从1切换到0,我能够让它正确创建wwwroot目录,当我进行部署时,它将其切换回1并创建wwwroot目录。
问题是,我仍然收到一个404为有效的URL。
1条答案
按热度按时间xqkwcwgp1#
找到了根本原因。我查看了正在运行的C#应用程序,发现在
Startup.cs
中,正在设置api路由后缀。MS文档对此非常混乱,其意图似乎是从/api
切换到/api/<something>
,虽然看起来在内部对函数本身起作用,但azure函数应用程序并不知道路由中的这种变化,因此它一直尝试在/api
上为请求提供服务。删除此行解决了这个问题。我相信,如果我们想更改路由后缀,最终可能的解决方案是更新host.json
和Startup.cs
中的值,但这是另一个SO票证的另一个问题(希望不是)