ASP.NET Core routing prefix

后端 未结 5 1084
余生分开走
余生分开走 2021-01-17 17:45

I\'m developing an ASP.NET Core application. My application hosted with NGinx on url http://somedomain.com/MyApplication.

I need all requests routed to

相关标签:
5条回答
  • 2021-01-17 17:52

    Attribute routing for ASP.NET Core.In the below example shows

    [Route("MyApplication")]
    public class MyController : Controller
    {
        //You can have multiple routes on an action
        [Route("")] /MyApplication
        [Route("/test")] you have move to the /MyApplication/test 
        [HttpGet]
        public async Task<IActionResult> Login(string returnUrl = null)
        {
            //Your Code Session
        }
    }
    

    OR you use Attribute routing with Http[Verb] attributes. To be add the path in [HttpGet("Your Path")],In the case of [HttpPost("Your Path")].

    [HttpGet("/MyApplication")]
            [AllowAnonymous]
            public async Task<IActionResult> Login(string returnUrl = null)
            {
                // Clear the existing external cookie to ensure a clean login process
                await HttpContext.SignOutAsync(IdentityConstants.ExternalScheme);
    
                ViewData["ReturnUrl"] = returnUrl;
                return View();
            }
    
    0 讨论(0)
  • 2021-01-17 17:57

    you can use the PathBase middleware just before Mvc like this :

    partial class Startup {
    
        public void Configure(
            IApplicationBuilder app,
            IHostingEnvironment env
        ) {
            app.UsePathBase(new PathString("/MyApplication"));
            app.UseMvc();
        }
    
    }
    

    with the PathBase middleware, no need to change any mvc code, it will automatically add to the request and response.

    please refer to https://docs.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.builder.usepathbaseextensions.usepathbase?view=aspnetcore-2.2

    0 讨论(0)
  • 2021-01-17 17:57

    If you are using MVC, you can try to change the default route format. In Startup.cs replace the line

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

    with this one:

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

    Let me know if it's what you need

    0 讨论(0)
  • 2021-01-17 18:00
    [Route("MyApplication")]
    public class MyController : Controller
    {
        [HttpGet]
        public async Task<IActionResult> Login(string returnUrl = null)
        {
            // Blah!
        }
    }
    
    0 讨论(0)
  • 2021-01-17 18:13

    In App_Start/RouteConfig.cs:

    routes.MapRoute(
        name: "default",
        url: "MyApplication/{controller}/{action}/{id}",
        defaults: new
        {
            controller = "Home",
            action = "Index",
            id = UrlParameter.Optional
        }
    );
    
    0 讨论(0)
提交回复
热议问题