【发布时间】:2013-11-06 16:58:00
【问题描述】:
在新的 ASP.NET Web api 中支持基于语言(Accept-Language 标头)的内容协商的最佳方式是什么?
新 API 提供了一种支持按媒体类型进行内容协商的好方法(请参阅 here),但我找不到关于如何根据语言标头进行内容协商的指针。
谢谢
【问题讨论】:
标签: asp.net-mvc asp.net-web-api
在新的 ASP.NET Web api 中支持基于语言(Accept-Language 标头)的内容协商的最佳方式是什么?
新 API 提供了一种支持按媒体类型进行内容协商的好方法(请参阅 here),但我找不到关于如何根据语言标头进行内容协商的指针。
谢谢
【问题讨论】:
标签: asp.net-mvc asp.net-web-api
您可以直接拨打FormatterSelector 帮助它知道您想要它做什么。 @AlexanderZeitler 指出,HttpMessageHandler 可能最适合在站点级别执行此操作。您可以在WebApiContrib 中看到使用FormatterSelector 的简单形式。
希望这将成为未来版本中的新扩展点。
【讨论】:
您可以使用 MessageHandler 来检查标头并更改接受标头以匹配您的自定义格式化程序可以协商的类型。
【讨论】:
如果您在 web.config 的全球化元素中将 set UICulture 和 Culture 设置为 auto,ASP.Net 将根据 Accept-Language 标头自动设置 CurrentThread.CurrentUICulture 和 CurrentThread.CurrentCulture。
<system.web>
<globalization uiCulture="auto" culture="auto"/>
</system.web>
【讨论】: