C# 在Web API中初始化控制器之前执行一些操作(设置语言)
我正在尝试在C# 在Web API中初始化控制器之前执行一些操作(设置语言),c#,.net,asp.net-web-api,globalization,asp.net-web-api2,C#,.net,Asp.net Web Api,Globalization,Asp.net Web Api2,我正在尝试在webapi中为我的控制器设置语言。 我正在编写一个名为SetLanguage的属性,并用它装饰我的webapi控制器 大概 [SetLanguage] public ServiceRequestController : ApiController 但问题是: public class SetAcceptLanguageHeader : Attribute, IControllerConfiguration { public void Initialize(
webapi中为我的控制器设置语言。
我正在编写一个名为SetLanguage
的属性,并用它装饰我的webapi控制器
大概
[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;
}
}
}
但是,我无法执行此操作,因为我无法从控制器设置
访问请求
(虽然我知道使用BaseController
并重写Initialize
方法来实现相同的功能,但我正在尝试使用此[SetLanguage]
属性`)
有什么办法吗?您可以尝试使用动作过滤器,如
public class SetLanguageAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
//Use actionContext.Request to access your request
}
}
然后可以使用[SetLanguage]属性来装饰action方法,该属性可以根据需要将其设置为区域性。有没有办法将其设置为类级属性并访问init?