根据用户在 Blazor Web 程序集项目中的位置分配 CosmosClientOptions.ApplicationRegion

Assign CosmosClientOptions.ApplicationRegion based on user's location in Blazor web assembly project

我正在使用 Microsoft.Azure.Cosmos.Client 从 blazor web assembly 项目连接 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 属性 但无法让自己清楚地了解它。

有什么建议吗?

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

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