我正在使用httppost和cookie更改带有列表的cultureinfo,它在我的本地测试中效果很好,但是当我将其上传到IIS时,它不起作用。
[HttpPost]
public IActionResult ChangeLanguage(string language , string returnUrl)
{
var cultureInfo = new CultureInfo(language);
CultureInfo.CurrentCulture.ClearCachedData();
if(CultureInfo.DefaultThreadCurrentCulture != null) CultureInfo.DefaultThreadCurrentCulture.ClearCachedData();
if(CultureInfo.DefaultThreadCurrentUICulture != null) CultureInfo.DefaultThreadCurrentUICulture.ClearCachedData();
Response.Cookies.Append(
CookieRequestCultureProvider.DefaultCookieName,
CookieRequestCultureProvider.MakeCookieValue(new RequestCulture(language)),
new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTimeOffset.UtcNow.AddDays(1)}
);
CultureInfo.CurrentCulture.ClearCachedData();
CultureInfo.CurrentCulture = cultureInfo;
return LocalRedirect(returnUrl);
}
HTML
<ul class="menulist dropdown-menu">
<form asp-action="ChangeLanguage" asp-controller="Home" asp-route-returnUrl="@Context.Request.Path" method="post" id="langform">
<input type="text" id="langinput" hidden name="language" value="" />
<li onclick="SubmitAndChange('tr')" class="lang-li"><div class="flag flag-tr"></div> Türkçe</li>
<li onclick="SubmitAndChange('en')" class="lang-li"><div class="flag flag-us"></div> English</li>
</form>
</ul>
JavaScript
function SubmitAndChange(lang) {
$("#langinput").val(lang);
$("#langform").submit();
}