ASP.NET Core routing prefix

Viewed 13034

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 prefix /MyApplication.

My problem with controllers actions responses redirects to somedomain.com, not to somedomain.com/MyApplication.

Is there any way to configure routes to use prefix /MyApplication?

UPD: for example

        [HttpGet]
        [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();
        }

redirects to somedomain.com, but i need to somedomain.com/MyApplication

5 Answers

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

[Route("MyApplication")]
public class MyController : Controller
{
    [HttpGet]
    public async Task<IActionResult> Login(string returnUrl = null)
    {
        // Blah!
    }
}

In App_Start/RouteConfig.cs:

routes.MapRoute(
    name: "default",
    url: "MyApplication/{controller}/{action}/{id}",
    defaults: new
    {
        controller = "Home",
        action = "Index",
        id = UrlParameter.Optional
    }
);

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();
        }
Related