如何在ASP.NET Core 2.0 中获得URL 的绝对路径?
How to get absolute URL's Path in ASP.NET Core 2.0?
我正在开发一个应用程序 ASP.NET Core 2.0。我有一个属性 class 来验证我的每个 api 请求,它继承了 ActionFilterAttribute class。但问题是我没有得到想要的请求 url,给定的 url 带有参数,我只需要 absoluteUrl 就像 /api/values/get
而不是 /api/values/get/1
。我想如果你看到我下面的代码,你就会清楚地理解。
Api
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet("get/{id}"),AuthorizationRequiredAttribute]
public IEnumerable<string> Get(int id)
{
return id;
}
}
AuthorizationRequiredAttribute
public class AuthorizationRequiredAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var url=context.HttpContext.Request.Path.ToString()
}
}
看看Request.GetDisplayURL
。此方法将给出完整的URL。请注意,该参数是从客户端发起的 URL 的一部分,因此将显示该参数。您需要手动将其删除或更改 URL 方案以使用查询字符串。
.Contains() 方法帮助我通过给定的操作实现逻辑 url
public class AuthorizationRequiredAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var url=context.HttpContext.Request.Path.ToString()
if(url.Contains("/api/values/get/1"))
{
//do something
}
}
}
我正在开发一个应用程序 ASP.NET Core 2.0。我有一个属性 class 来验证我的每个 api 请求,它继承了 ActionFilterAttribute class。但问题是我没有得到想要的请求 url,给定的 url 带有参数,我只需要 absoluteUrl 就像 /api/values/get
而不是 /api/values/get/1
。我想如果你看到我下面的代码,你就会清楚地理解。
Api
[Route("api/[controller]")]
public class ValuesController : Controller
{
[HttpGet("get/{id}"),AuthorizationRequiredAttribute]
public IEnumerable<string> Get(int id)
{
return id;
}
}
AuthorizationRequiredAttribute
public class AuthorizationRequiredAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var url=context.HttpContext.Request.Path.ToString()
}
}
看看Request.GetDisplayURL
。此方法将给出完整的URL。请注意,该参数是从客户端发起的 URL 的一部分,因此将显示该参数。您需要手动将其删除或更改 URL 方案以使用查询字符串。
.Contains() 方法帮助我通过给定的操作实现逻辑 url
public class AuthorizationRequiredAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
var url=context.HttpContext.Request.Path.ToString()
if(url.Contains("/api/values/get/1"))
{
//do something
}
}
}