我正在尝试运行。Net项目,构建显示Successfull,没有任何错误。
以下是浏览器的常规标题信息。
Request URL: https://localhost:5001/
Request Method: GET
Status Code: 404
Remote Address: [::1]:5001
Referrer Policy: strict-origin-when-cross-origin
其中,与在windows上的另一方面一样,浏览器似乎以200个原因代码正确运行。请给我建议。
一个对我有用的小清单:
- 在中注释nginx主机配置中的
try_files $uri $uri/ =404;
行
sudo nano /etc/nginx/sites-available/<your-site>
或/和
sudo nano /etc/nginx/sites-available/default
因为它正在测试文件系统上是否存在某个url,如果不存在则返回404。
- 此外,我对
sudo nano /etc/nginx/sites-available/default
文件中的所有内容进行了注释,以确保没有任何多余的内容阻止api工作(如果您的api配置在单独的文件中,如/etc/nginx/sites-available/<your-site>
(
然后重新启动nginxsudo systemctl restart nginx && systemctl status nginx
- 在您的dotnet项目中,检查重定向中间件是否仅在生产环境中使用,或者尝试对所有环境进行注释,以检测是否存在问题(适用于我的情况(
if (!app.Environment.IsDevelopment())
{
app.UseHttpsRedirection(); //leave like this or try to comment it just for checking
}
- 同样在您的dotnet项目中,检查您是否有api路径设置。类似于:
app.UsePathBase(apiBasePath);
请确保此路径与第一步中文件中的location
设置相同。当然,如果发生更改,不要忘记在服务器上上传您的项目,并重新启动您的api服务:
sudo systemctl restart your-kestrel-api.service
对我来说,解决方案是删除https 的中间件
app.UseHttpsRedirection();