asp.net core获取当前请求的完整url

asp.net core获取当前请求的完整url

首先需要在控制器项目中使用NuGet引入 Microsoft.AspNetCore.Http.Abstractions包。

然后有两种获取当前URL的方式。

方法1,在控制器里面,string displayUrl = HttpContext.Request.GetDisplayUrl();

方法2,定义一个HttpRequest的扩展类。

using Microsoft.AspNetCore.Http.Extensions;

namespace demo1.tools
{
    public static class HttpRequestExtensions
    {
        public static string GetAbsoluteUri(this HttpRequest request)
        {
            return new StringBuilder()
                .Append(request.Scheme)
                .Append("://")
                .Append(request.Host)
                .Append(request.PathBase)
                .Append(request.Path)
                .Append(request.QueryString)
                .ToString();
        }
    }
}

调用方式:

方法1,直接调用 Request.GetDisplayUrl()方法。
string displayUrl = HttpContext.Request.GetDisplayUrl();
方法2 调用扩展方法


string requestUrl = HttpRequestExtensions.GetAbsoluteUri(HttpContext.Request);
using demo1.tools;
using Microsoft.AspNetCore.Http.Extensions;

namespace demo1.xTwoMvc.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            //方法1 直接调用Request.GetDisplayUrl()方法
            string displayUrl = HttpContext.Request.GetDisplayUrl();  
            //方法2 调用扩展方法
            string requestUrl = HttpRequestExtensions.GetAbsoluteUri(HttpContext.Request);
            base.ViewData["displayUrl"] = displayUrl;
            base.ViewData["requestUrl"] = requestUrl; 
            return View();
        }
    }
}