首页 > 解决方案 > DotNet Core App 找不到控制器方法

问题描述

我有这个 .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

我不明白为什么它会在测试期间在本地工作,然后在我们发布时停止工作。

一些文章建议在 Startup 中将 services.AddControllers() 添加到 ConfigureServices,但 VS 告诉我这不是一个有效的方法。

我什至不知道从哪里开始寻找。这是路由问题吗?和 IIS 问题?AzureDevOps 问题?配置问题?

我就是这样。丢失的。

标签: asp.net-corepostiiscontrollerurl-routing

解决方案


404错误的原因有很多。您可以尝试以下方法:

1.您需要发布您的网站,然后将 IIS 网站指向已发布的文件夹。

2.应用程序池必须设置为No Managed code

3.Application Pool 身份用户IIS AppPool\{AppPoolName}必须对已发布的网站文件夹具有读取权限。将应用程序池的标识更改为 ApplicationPoolIdentity。对于应用程序池身份,将有一个名为 IIS AppPool{Applicaiton Pool name} 的用户帐户,例如对于 DefaultAppPool,用户帐户是这样的IIS AppPool\DefaultAppPool,因此您可以允许在已发布的应用程序文件夹上对您的应用程序池用户进行读/写访问。

如果您仍然无法解决问题,请发布您的控制器代码和 web.config 文件。


推荐阅读