【问题标题】:Localizing ASP.NET MVC application in Azure not working在 Azure 中本地化 ASP.NET MVC 应用程序不起作用
【发布时间】:2016-03-31 11:19:44
【问题描述】:

我正在尝试本地化我的 ASP.NET MVC 应用程序。

我创建了一个名为 Internationalization 的操作过滤器:

public class InternationalizationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var cookie = filterContext.HttpContext.Request.Cookies.Get("lang");
        string language = cookie == null ? "en" : cookie.Value;

        Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(string.Format(language));
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(string.Format(language));
    }
}

我有一个使用此过滤器的 BaseController 类:

[Internationalization]
public abstract class BaseController : Controller
{
    ...
}

我在 HomeControllerActionResult 中设置 lang cookie:

public ActionResult SetLanguage(string lang)
{
    HttpCookie cookie = new HttpCookie("lang", lang);
    cookie.Expires = DateTime.Now.AddDays(30);
    this.HttpContext.Response.Cookies.Add(cookie);
    return this.Redirect(this.Request.UrlReferrer.LocalPath);
}

我还在 Web.config 中添加了以下内容:

<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto" />

最后,我在 App_GlobalResources 文件夹中创建了必要的资源,并在我的页面中使用它们。

当我在本地构建应用程序时,这一切都很好 - 我使用调用 SetLanguage 操作的下拉菜单切换到新语言,并且应用程序的语言更改为所选语言。

但是一旦我部署到 Azure,同样的方法就不再适用了。即使设置了 cookie,应用程序仍会使用默认语言(英语)。

如果有人能对此事有所了解,我将不胜感激。也将不胜感激有关实现相同效果的更好方法的建议。

提前谢谢你!

【问题讨论】:

  • 您是否尝试从 web.config 中删除“全球化”节点,并将其余代码放在(BaseController)上?
  • 您使用多少种语言?是在语言之间切换以显示该作品,还是在切换时使用了错误的语言?什么不工作?可能有很多东西:)
  • 我已经相应地更新了我的问题。感谢您的反馈。

标签: c# asp.net asp.net-mvc azure localization


【解决方案1】:

问题很可能是您没有设置要正确构建和部署的全局资源。看看http://odetocode.com/blogs/scott/archive/2009/07/16/resource-files-and-asp-net-mvc-projects.aspx

请注意,最好在它们自己的程序集中使用资源,以确保它们与您的 MVC 项目一起部署(并且可供您访问)。

【讨论】:

    最近更新 更多