wake-up-neo.com

Holen Sie sich die vollständige Route zur aktuellen Aktion

Ich habe eine einfache API mit grundlegenden Routing. Es wurde mit der Standard-ASP.NET Core API-Vorlage von Visual Studio 2015 eingerichtet.

Ich habe diesen Controller und Aktion:

[Route("api/[controller]")]
public class DocumentController : Controller
{
    [HttpGet("info/{Id}")]
    public async Task<Data> Get(string Id)
    {
        //Logic
    }
}

Um zu dieser Methode zu gelangen, muss ich GET /api/document/info/some-id-here Aufrufen.

Ist es mit .NET Core möglich, innerhalb dieser Methode die vollständige Route als Zeichenfolge abzurufen?

So könnte ich zum Beispiel tun:

var myRoute = retrieveRoute();

// myRoute = "/api/document/info/some-id-here"
23
BlackHoleGalaxy

Sie können die vollständige angeforderte URL mit der Option Request (HttpRequest) in .Net Core abrufen.

var route = Request.Path.Value;

Ihr endgültiger Code.

[Route("api/[controller]")]
public class DocumentController : Controller
{
    [HttpGet("info/{Id}")]
    public async Task<Data> Get(string Id)
    {
        var route = Request.Path.Value;
    }
}

Ergebnisroute: "/ api/document/info/some-id-here" // zum Beispiel

31

Sie können MVC auch auffordern, eine neue Routen-URL basierend auf den aktuellen Routenwerten zu erstellen:

[Route("api/[controller]")]
public class DocumentController : Controller
{
    [HttpGet("info/{Id}")]
    public async Task<Data> Get(string Id)
    {
        //Logic

        var myRoute = Url.RouteUrl(RouteData.Values);
    }
}

Url.RouteUrl ist eine Hilfsmethode, mit der Sie eine Routen-URL mit beliebigen Routenwerten erstellen können. RouteData.Values gibt Ihnen die Routenwerte für die aktuelle Anfrage an.

9
Nate Barbettini