gpt4 book ai didi

c# - 在 Web API 中 Controller 初始化之前执行一些操作(设置语言)

转载 作者:行者123 更新时间:2023-11-30 16:59:11 24 4
gpt4 key购买 nike

我正在尝试在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com