ASP.NET MVC Webフォームを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"]
stringではなくStringValuesを返します。これを使用する必要があるかどうか、またはこの状況に他の解決策があるかどうかはわかりません。 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;
誰かが私を正しい方向に導くことができたら本当に感謝しています。
あなたはほとんどそこにいます。 StringValues
クラスは、ASP.NETがフレームワークで文字列を効率的に表現するために使用する単なるタイプです。特にHttpContext
オブジェクト内。それに対してToString()
を呼び出すだけで、文字列に変換できます。
string referer = Request.Headers["Referer"].ToString();
Asp.netコア2の時点でGetTypedHeaders
を使用
RequestHeaders header = request.GetTypedHeaders();
Uri uriReferer = header.Referer;
URLリファラーを取得した方法は次のとおりです。
@{
string referer = Context.Request.Headers["Referer"].ToString();
Uri baseUri = new Uri(referer);}
<form asp-action="Login" asp-route-returnUrl="@baseUri.AbsolutePath">
using Microsoft.AspNetCore.Server.Kestrel.Internal.Http;
var referer = ((FrameRequestHeaders)Request.Headers).HeaderReferer.FirstOrDefault();
マジックストリングなしの受け入れられた答えとほぼ同じ