[英]How to get absolute URL's Path in ASP.NET Core 2.0?
我正在开发一个应用程序ASP.NET Core 2.0。 我有一个属性类来验证我的每个api请求,这些请求继承了ActionFilterAttribute类。 但是问题是我没有得到想要的请求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()方法可帮助我使用给定的操作网址来实现逻辑
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
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.