asp.net-core - 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 问题?配置问题?
我就是这样。丢失的。
解决方案
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 文件。
推荐阅读
- javascript - 如何检查tabindex是否有焦点?
- c - 如何打印从 1 到 1000 的所有素数?
- java - java - 如何在java swing中的内容窗格(JPanel)上打印图像
- javascript - 是否可以使用 .map() 从对象数组创建对象?
- elasticsearch - 在多边形中查找坐标
- python - 使用python打印10个100个随机数范围(1,100)的列表,并且每个数字在同一个列表中重复但不在另一个列表中重复?
- javascript - 如何修改嵌套对象的属性?
- r - R:特征向量都是空的
- python - 在循环中拟合 Ensemble Regressor 会生成重复值
- python - 无法使用 OpenGL 找到渲染