C# 在ASP.NET Core Web.API中拦截调用程序语言

C# 在ASP.NET Core Web.API中拦截调用程序语言,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,有没有办法在C语言的ASP.NET核心Web API中截取调用方的语言 我指的是来电者的自然语言 我用以下代码解决了这个问题: private string GetCulture() { var headers = this.Request.Headers; if (headers.ContainsKey("Accept-Language")) { Microsoft.Extensions.Primitive

有没有办法在C语言的ASP.NET核心Web API中截取调用方的语言

我指的是来电者的自然语言

我用以下代码解决了这个问题:

    private string GetCulture()
    {
        var headers = this.Request.Headers;
        if (headers.ContainsKey("Accept-Language"))
        {
            Microsoft.Extensions.Primitives.StringValues token;
            headers.TryGetValue("Accept-Language",out token);
            return token[0].ToString().Split(';')[0].Split(',')[0];
        }
        return ("en-GB");
    }

感谢大家。

按语言如果你指的是自然语言,如英语,客户端可以在http头内容语言中指定:en us

如果您指的是编程语言,那么http规范中没有定义标准头来执行此操作

有些客户端包含一个用户代理头,告诉您是哪种应用程序发出了请求。但并非所有客户都这样做

如果您可以控制呼叫者,那么当呼叫者请求表示语言时,您可以设置自己的http头

例如,X-Caller-Language:cs

并将web Api上的标题解释为“客户端应用程序是c”

如果你真的想强制你的调用者指定这个头,你应该在你的代码中检查这个头,如果它不存在,你应该返回一个错误代码400,并说明你想要什么


在任何情况下,这都不应该引起服务器的关注。您的API应该设计为独立于平台

您是指用于调用javascript、c、python等的编程语言,还是指语言标题调用者首选英语/法语/西班牙语作为返回结果?如果是后者,那么您应该看看我想您正在寻找它我想使用调用者的自然语言本地化资源。