gpt4 book ai didi

c# - ADFS 登录页面本地化 - ASP.NET : I can't seem to be able to change language of the page dynamically

转载 作者:行者123 更新时间:2023-11-30 18:02:28 25 4
gpt4 key购买 nike

在我的项目中,我们使用默认的 ADFS 登录页面以单点登录方式登录 ADFS。该页面本身需要大量参数,但我无法从请求中获取任何参数。我已经为初始化文化创建了一个覆盖函数,如下所示:

protected override void InitializeCulture()
{
string languageId = Request["lang"];

if (languageId != null)
{
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(languageId);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(languageId);
}

base.InitializeCulture();
}

我的想法是有一个标志,它是一个链接,它会添加一些我可以从请求的初始化文化方法中捕获的东西。

现在手动设置区域性(如跳过请求阅读部分)效果很好,我可以更改页面的语言和区域性。但是我无法从请求中得到任何东西。这包括原始获取 URL 中的任何预定义参数。

我也无法将任何内容存储到 session 中,我假设它是因为登录页面的创建方式。

有没有人能够动态本地化他们的 ADFS 登录页面?如果是这样,将不胜感激。

最佳答案

您需要查看 Request.UserLanguages 以从请求中获取文化。不确定 Request["lang"] 是否始终如一。

我使用一些通用代码来设置语言环境,如下所示:

    public static void SetUserLocale(string currencySymbol, bool setUiCulture)
{
HttpRequest Request = HttpContext.Current.Request;
if (Request.UserLanguages == null)
return;

string Lang = Request.UserLanguages[0];
if (Lang != null)
{
if (Lang.Length < 3)
Lang = Lang + "-" + Lang.ToUpper();
try
{
CultureInfo Culture = new CultureInfo(Lang);
if (currencySymbol != null && currencySymbol != "")
Culture.NumberFormat.CurrencySymbol = currencySymbol;

Thread.CurrentThread.CurrentCulture = Culture;

if (setUiCulture)
Thread.CurrentThread.CurrentUICulture = Culture;
}
catch
{ /// avoid invalid language selection bombing }
}
}

我倾向于不在页面中而是在 Application_BeginRequest 中调用它,因此它是全局的。

关于c# - ADFS 登录页面本地化 - ASP.NET : I can't seem to be able to change language of the page dynamically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com