📜  在 asp.net core 中获取请求 url - C# (1)

📅  最后修改于: 2023-12-03 14:50:51.394000             🧑  作者: Mango

在 ASP.NET Core 中获取请求 URL

在 ASP.NET Core 中,获取当前请求的 URL 是非常常见的需求。URL 可能包含路径、查询参数和片段等信息,你可能需要在应用程序中使用这些信息。

下面是在 C# 中获取请求 URL 的几种常见方法:

1. 使用 HttpRequest

你可以通过注入 HttpRequest 对象来获取当前请求的 URL。HttpRequest 对象提供了许多有用的属性,可以方便地访问请求的各个部分。

using Microsoft.AspNetCore.Http;

public class MyController : Controller
{
    private readonly HttpRequest _request;

    public MyController(IHttpContextAccessor httpContextAccessor)
    {
        _request = httpContextAccessor.HttpContext.Request;
    }

    public IActionResult Index()
    {
        string url = _request.Scheme + "://" + _request.Host + _request.Path + _request.QueryString;
        // TODO: 使用 url
        // ...
        return View();
    }
}
2. 使用 UrlHelper

另一种获取请求 URL 的方法是使用 UrlHelper 类。UrlHelper 类是 ASP.NET Core 中的一个实用工具,它提供了许多用于生成 URL 的方法。

using Microsoft.AspNetCore.Mvc;

public class MyController : Controller
{
    private readonly IUrlHelper _urlHelper;

    public MyController(IUrlHelperFactory urlHelperFactory)
    {
        _urlHelper = urlHelperFactory.GetUrlHelper(ControllerContext);
    }

    public IActionResult Index()
    {
        string url = _urlHelper.Action("ActionName", "ControllerName", new { id = 1 });
        // TODO: 使用 url
        // ...
        return View();
    }
}
3. 使用 HttpContext

另一种简单的方法是通过 HttpContext 对象访问请求的 URL。HttpContext 对象是 ASP.NET Core 中的核心概念,它提供了对当前请求的访问权限。

using Microsoft.AspNetCore.Http;

public class MyController : Controller
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public MyController(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public IActionResult Index()
    {
        string url = _httpContextAccessor.HttpContext.Request.GetDisplayUrl();
        // TODO: 使用 url
        // ...
        return View();
    }
}

这些方法中的每一种都有其自己的优点和用途,选择其中之一取决于你的具体需求和个人偏好。

希望本文对你有所帮助!如果你有任何疑问,请随时提问。