首页 文章

如何在ASP.NET Core MVC中获取Url Referrer?

提问于
浏览
54

我正在尝试将ASP.NET MVC webform迁移到ASP.NET Core MVC . 目前,我遇到了 Request.UrlReferrer 课程的问题 .

原来的行是:

[HttpPost]
    public async Task<ActionResult> ContactUsFormSubmit(ContactUs request)
    {
        var siteUrl = Request.UrlReferrer.ToString().ToLower();
        ....
    }

但是,使用ASP.NET Core时,UrlReferrer不可用 . 我发现了以下内容:

Request.Headers["Referer"]

返回StringValues而不是String . 我不确定我是否应该尝试使用这个或者是否有任何其他解决方案 . Request.ServerVariables 也不可用,或者我没有命名空间 . 我的命名空间如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

如果有人能指引我朝着正确的方向前进,我真的很感激 .

3 回答

  • 89

    你快到了 . StringValues 类只是ASP.NET用于在框架中有效表示字符串的类型 . 特别是在 HttpContext 对象中 . 您可以在其上调用 ToString() 将其转换为字符串:

    string referer = Request.Headers["Referer"].ToString();
    
  • 5
    using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
    
    var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
    

    几乎与没有魔法字符串的接受答案相同

  • 0

    以下是我如何获得网址推荐人: -

    @{
    string referer = Context.Request.Headers["Referer"].ToString();
    Uri baseUri = new Uri(referer);}
    
    
    <form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
    

相关问题