繁体   English   中英

如何在ASP.NET Core 2.0中获取绝对URL的路径?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM