我正在尝试在 Web API
(执行国际化全局化)中将 Language
设置为我的 controller
。
我正在编写一个名为 SetLanguage
的属性,并用它装饰我的 web-api Controller
有点像,
[SetLanguage]
public ServiceRequestController : ApiController
但问题是这样的:
public class SetAcceptLanguageHeader : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
if (controllerSettings.Request.Headers.AcceptLanguage != null && controllerContext.Request.Headers.AcceptLanguage.Count > 0)
{
var culture = new CultureInfo(controllerContext.Request.Headers.AcceptLanguage.First().Value);
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
}
}
但是,我无法执行此操作,因为我无法从 controllerSettings
访问 Request
。
(虽然我知道使用 BaseController
并覆盖 Initialize
方法来实现相同的想法,但我正在尝试使用此 [SetLanguage]
属性`)
有什么想法吗?
最佳答案
您可以尝试使用像这样的 Action 过滤器
public class SetLanguageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//Use actionContext.Request to access your request
}
}
这可以用来装饰具有 [SetLanguage] 属性的操作方法,该属性可以根据需要将其设置为文化。
关于c# - 在 Web API 中 Controller 初始化之前执行一些操作(设置语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24120499/