HTTP在尝试时获取状态代码404.Net项目在Ubuntu 20.04



我正在尝试运行。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个原因代码正确运行。请给我建议。

一个对我有用的小清单:

  1. 在中注释nginx主机配置中的try_files $uri $uri/ =404;

sudo nano /etc/nginx/sites-available/<your-site>

或/和

sudo nano /etc/nginx/sites-available/default

因为它正在测试文件系统上是否存在某个url,如果不存在则返回404。

  1. 此外,我对sudo nano /etc/nginx/sites-available/default文件中的所有内容进行了注释,以确保没有任何多余的内容阻止api工作(如果您的api配置在单独的文件中,如/etc/nginx/sites-available/<your-site>(

然后重新启动nginxsudo systemctl restart nginx && systemctl status nginx

  1. 在您的dotnet项目中,检查重定向中间件是否仅在生产环境中使用,或者尝试对所有环境进行注释,以检测是否存在问题(适用于我的情况(
if (!app.Environment.IsDevelopment())
{
app.UseHttpsRedirection(); //leave like this or try to comment it just for checking
}
  1. 同样在您的dotnet项目中,检查您是否有api路径设置。类似于:
app.UsePathBase(apiBasePath);

请确保此路径与第一步中文件中的location设置相同。当然,如果发生更改,不要忘记在服务器上上传您的项目,并重新启动您的api服务:

sudo systemctl restart your-kestrel-api.service

对我来说,解决方案是删除https 的中间件

app.UseHttpsRedirection();

相关内容

  • 没有找到相关文章