![](/img/trans.png)
[英]ASP.NET Core 2.1 Web.API change application insights instrumentation key for logging
[英]Intercept caller language in ASP.NET Core Web.API
有沒有辦法在C#中的ASP.NET Core 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標頭content-language:en-us
指定此content-language:en-us
如果您指的是編程語言,則http規范中沒有定義標准的標頭來執行此操作。
一些客戶端包含一個user-agent
標頭,以告訴您發出請求的是哪種應用程序。 但並非所有客戶都這樣做。
如果您可以控制呼叫者,則在呼叫者發出表示語言的請求時,您可以設置自己的http標頭。
對於例如X-Caller-Language:cs
並在您的Web Api上將此標頭解釋為“客戶端應用程序為c#”
並且,如果您確實要強制調用者指定此標頭,則應在代碼中檢查此標頭,如果不存在,則應返回錯誤代碼400,其中包含有關您期望的說明。
在任何情況下,服務器都不必擔心。 您的api應該設計為獨立於平台。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.