【问题标题】:How to get absolute URL's Path in ASP.NET Core 2.0?如何在 ASP.NET Core 2.0 中获取绝对 URL 路径?
【发布时间】:2018-04-04 10:15:22
【问题描述】:

我正在开发一个应用程序 ASP.NET Core 2.0。我有一个属性类来验证我的每个 api 请求,它继承了 ActionFilterAttribute 类。但问题是我没有得到想要的请求url,给定的url带有参数,我只需要像/api/values/get这样的absoluteUrl,而不是像/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()
    }
}

【问题讨论】:

  • 请注意,绝对 URL 具有 protocol://domain/path 格式,您确实只想检查 path 的一部分。所以最好编辑你的问题。
  • 感谢@Set,已编辑

标签: c# asp.net-core httpcontext actionfilterattribute


【解决方案1】:

看看Request.GetDisplayURL。此方法将提供完整的 URL。请注意,该参数是从客户端启动的 URL 的一部分,因此将显示。您要么需要手动删除它,要么更改您的 URL 方案以使用查询字符串。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-14
      • 2012-08-27
      • 2015-08-25
      • 2021-10-18
      • 2022-12-06
      • 2015-11-15
      • 1970-01-01
      相关资源
      最近更新 更多