隐藏

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

发布:2021/7/16 8:38:28作者:管理员 来源:本站 浏览次数:1019

首先需要在控制器项目中使用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();

       }

   }

}