0

我正在使用 Microsoft.Azure.Cosmos.Client 从 blazor Web 程序集项目连接 cosmos 数据库。我的 Cosmos 数据库有多个读取区域,即韩国(基准位置)和日本东部(读取区域)。

我希望我的 blazor 客户端应用程序从最近的 cosmos 数据库位置加载数据。为此,我希望 cosmos 数据库自动将请求路由到最近的服务器,但它总是从韩国加载数据。为了解决这个问题,我尝试使用固定值指定 CosmosClientOptions.ApplicationRegion 属性,如下面的代码:

            CosmosClientOptions clientOptions = new CosmosClientOptions()
            {
                ConnectionMode = ConnectionMode.Gateway,
                ApplicationRegion = Regions.JapanEast // need to set this property dynamically based on users location
                
                //ApplicationPreferredRegions = new List<string>() { Regions.JapanEast, Regions.KoreaSouth } //Also tried this, but always loading from Japan east even if accessed from South Korea
            };

            client = new CosmosClient(Credentials.EndPoint, Credentials.ResourceToken, clientOptions);

在这种情况下,它总是从日本东部服务器加载数据。我也尝试设置 LimitToEndpoint = true 属性,但无法让自己清楚地了解它。

有什么建议么?

4

1 回答 1

0

Cosmos 客户端没有任何网络指标可以自动告诉它要连接的最近区域是什么。您必须指定该值。首选区域只是在某个区域变得不可用时要连接到的一组区域。

客户通常在应用程序的区域部署中指定区域名称的值。所以你应该查看你的部署脚本来传递这个值。

于 2020-07-09T21:08:14.470 回答