web-dev-qa-db-ja.com

サーバーサイドBlazorでHttpContextオブジェクトを使用してユーザー、ユーザーエージェントに関する情報を取得する方法

IPアドレスなど。ユーザーがServer Blazorアプリでそれを行う方法を尋ねると、それは不可能であると言われるか、JSInteropを使用した部分的なソリューションが提供されることがあります。しかし、JSInteropに頼ることなくそれを行うことができますか?ここに答えがあります...

3
enet

スタートアップ> ConfigureServicesで:

 services.AddControllers();

スタートアップ>構成:

  app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
                endpoints.MapBlazorHub();
                endpoints.MapFallbackToPage("/_Host");
            });

フォルダ名を追加します:Controllers

コントローラ名itを追加:InitController

次のようなメソッドを追加します。

   [Route("[controller]/[action]")]
    public class InitController : Controller
    {
    public IActionResult UserInfo(string redirectUri)
        {
           var request = Request.HttpContext;


            return LocalRedirect(redirectUri);
        }
}

リクエスト変数に、すべてのデータが存在します

最後に、ページまたはコンポーネントからユーザーをリダイレクトするには、次のコードを使用します。

@inject NavigationManager NavigationManager

@code{
     protected override Task OnInitializedAsync ()
        {       var uri = new Uri(NavigationManager.Uri)
            .GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);

           var query = $"?redirectUri={Uri.EscapeDataString(uri)}";
          NavigationManager.NavigateTo("/Init/UserInfo" + query, forceLoad: true);
           StateHasChanged();

            return base.OnInitializedAsync();


        }
}
0
Soroush Asadi