使用nginx路由的linux上的asp.net核心不起作用

Erd*_*mir 4 linux nginx asp.net-core-mvc asp.net-core asp.net-core-1.1

我已经创建了一个ASP.NET Core MVC应用程序并将其部署到Linux服务器中.当我去sitename.com时,浏览器显示Home/Index页面没有任何问题.

但是当我试图去sitename.com/Home/Index或像sitename.com/Admin/Loginnginx 这样的另一个控制器抛出一个404 Not Found错误.应该是什么问题?

这是我的Startup.cs/Configure方法.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBrowserLink();
        }
        else
        {
            app.UseExceptionHandler("/Home/Error");
        }

        app.UseStaticFiles();

        app.UseSession();

        app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
    }
Run Code Online (Sandbox Code Playgroud)

这是我的网站配置sites-available文件夹

server {
   listen 80 default_server;
   listen [::]:80 default_server ipv6only=on;

   root /var/www/sitename.com;
   index index.html index.htm;

   server_name sitename.com www.sitename.com;

   location / {
      try_files $uri $uri/ =404;
      proxy_pass http://127.0.0.1:5000;
   }
Run Code Online (Sandbox Code Playgroud)

nginx.conf

    user www-data;
    worker_processes 4;
    pid /run/nginx.pid;

    events {
        worker_connections 768;
    }

    http {

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msie6";

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
    }

    mail {

    }
Run Code Online (Sandbox Code Playgroud)

Tse*_*eng 8

try_files $uri $uri/ =404;如果文件系统上存在某个url并且如果不返回404,则在测试时删除.

但是/Home/Index是一个路由,它不映射到现有文件而是映射到控制器操作,因此您会收到404错误.