使用dotnetcore3在c#项目中将当前的文化从Grpc Client发送到Grpc Server的最佳实践是什么?
答案 0 :(得分:0)
了解有关CultureInfo的信息。此类包含一个名为Name
的字符串属性。通常,您只需要执行CultureInfo.CurrentCulture
即可访问当前上下文。
您还可以通过在CultureInfo.CurrentCulture
上设置一个值来在服务器和客户端中定义自己的区域性。
例如:
CultureInfo.CurrentCulture = new CultureInfo("en-US");
答案 1 :(得分:0)
我设法通过将文化添加到标题并使用拦截器来做到这一点:
<div class="container">
<h1>Is it morning, afternoon, evening, or night?</h1>
</div>
在您的 Startup.cs 中:
public class ThreadCultureInterceptor : Interceptor
{
public override async Task<TResponse> UnaryServerHandler<TRequest, TResponse>(
TRequest request,
ServerCallContext context,
UnaryServerMethod<TRequest, TResponse> continuation)
{
var headerLanguage = context.RequestHeaders.FirstOrDefault(t => t.Key == "language");
if (headerLanguage != null)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(headerLanguage.Value);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(headerLanguage.Value);
}
return await continuation(request, context);
}
}
在您的客户端应用程序上:
services.AddGrpc(options =>
{
options.Interceptors.Add<ThreadCultureInterceptor>();
});