iis DotNet Core App找不到控制器

x4shl7ld  于 12个月前  发布在  其他
关注(0)|答案(2)|浏览(124)

我有一个.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问题?配置问题?
我很迷茫。

brc7rcf0

brc7rcf01#

404错误的原因很多。您可以尝试以下方法:
1.您需要发布您的网站,然后将IIS网站指向已发布的文件夹。
2.应用程序池必须设置为No Managed code
3.应用程序池身份用户IIS AppPool\{AppPoolName}必须对发布的网站文件夹具有读取权限。将应用程序池的标识更改为ApplicationPoolIdentity。对于应用程序池标识,将存在名称为IIS AppPool{ApplicationPool name}的用户帐户,例如对于DefaultAppPool,用户帐户是IIS AppPool\DefaultAppPool,因此您可以允许对已发布应用程序文件夹的应用程序池用户进行读/写访问。
如果您仍然不能解决您的问题,请发布您的控制器代码和web.config文件。

li9yvcax

li9yvcax2#

对于遇到这个问题的人:
我的问题是我使用了OData和IIS。OData-Query字符串导致API的url超过最大字符限制,因此返回404错误。在IIS中增加URL字符限制后,我可以解决这个问题。

相关问题