我有一个.net core 2.2的应用程序,它可以在本地运行。它有两个主要的项目,PictureLink.UI和PictureLink. API。
UI端通过Angular前端从API端向POST和GET发送请求。
在当地,它工作得很好。当它向UI端发送GET时,它会发送到URL,如:https://localhost:44343/UI/auth/DecodeJwtPayload<--这个可以用
当它试图访问API端时,它会发送到以下URL:https://localhost:44343/API/photo/GetPhotos<--可以使用
在当地,它工作得很好。
然后我发布了它,现在的URL是这样的:https://{url}/UI/auth/DecodeJwtPayload<--这个可以用
当它试图访问API端时,它会发送到以下URL:https://{URL}/API/photo/GetPhotos<--返回404
我不明白为什么它会在测试期间在本地工作,然后在我们发布它时停止工作。
有些文章建议在启动时将services.AddControllers()添加到ConfigureServices中,但VS告诉我这不是一个有效的方法。
我都不知道从哪开始找。这是路由问题吗?IIS问题?AzureDevOps问题?配置问题?
我很迷茫。
2条答案
按热度按时间brc7rcf01#
404错误的原因很多。您可以尝试以下方法:
1.您需要发布您的网站,然后将IIS网站指向已发布的文件夹。
2.应用程序池必须设置为
No Managed code
3.应用程序池身份用户
IIS AppPool\{AppPoolName}
必须对发布的网站文件夹具有读取权限。将应用程序池的标识更改为ApplicationPoolIdentity。对于应用程序池标识,将存在名称为IIS AppPool{ApplicationPool name}的用户帐户,例如对于DefaultAppPool,用户帐户是IIS AppPool\DefaultAppPool
,因此您可以允许对已发布应用程序文件夹的应用程序池用户进行读/写访问。如果您仍然不能解决您的问题,请发布您的控制器代码和web.config文件。
li9yvcax2#
对于遇到这个问题的人:
我的问题是我使用了OData和IIS。OData-Query字符串导致API的url超过最大字符限制,因此返回404错误。在IIS中增加URL字符限制后,我可以解决这个问题。