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"
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
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.