Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Web API中初始化控制器之前执行一些操作(设置语言)_C#_.net_Asp.net Web Api_Globalization_Asp.net Web Api2 - Fatal编程技术网

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?