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