【问题标题】:Connecting to google datastore emulator with ASP.NET Core application使用 ASP.NET Core 应用程序连接到谷歌数据存储模拟器
【发布时间】:2017-12-16 21:09:30
【问题描述】:

我正在尝试在本地(在 Windows 上运行)配置数据存储模拟器以进行开发和测试,因为在云中更新索引需要大量时间。我正在一步一步地通过这个guide

  1. gcloud beta 模拟器数据存储启动
  2. 应配置环境变量:只需逐行手动编写set VARIABLE_NAME=VARIABLE_VALUE
  3. 尝试访问 localhost:8081 - 返回 Ok
  4. 尝试访问 localhost:8081/datastore - 返回 未找到
  5. 在本地重新启动应用程序并尝试对数据存储进行一些操作:所有更改都应用在云端,而不是本地...

【问题讨论】:

  • 您是否将 localhost:8081/datastore 地址放在浏览器中?什么是预期的输出?您是否运行过 gcloud beta emulators datastore start 命令?您是否使用 export DATASTORE_EMULATOR_HOST=localhost:8432 或类似设置了环境变量?哪些代码行尝试访问数据存储?您可以查看“运行云数据存储模拟器”页面:cloud.google.com/datastore/docs/tools/datastore-emulator
  • @George,请注意我的问题中提到的 1,2...5 个步骤,我已经完成了所有这些。是的,我一直被这个页面引导:cloud.google.com/datastore/docs/tools/datastore-emulator
  • 您的代码究竟是如何访问数据存储模拟器的?几行可以说明问题。
  • 我的代码对模拟器一无所知,我执行与数据存储的标准连接,它与云数据存储一起工作,问题是在配置模拟器和设置新的全局配置变量后,与云数据存储工作的代码相同应该开始使用数据存储模拟器,但它没有,如果我错了,请纠正我。
  • 您的代码应该使用诸如 emulator_dataset = os.getenv(GCD_DATASET) 之类的语句来了解环境。

标签: google-app-engine asp.net-core google-cloud-datastore google-cloud-platform app-engine-flexible


【解决方案1】:

我遵循了相同的步骤,但除非我向 DataStore 的 Create 调用提供明确的说明,否则无法使其正常工作。

您需要区分您的代码是在 GCP 还是在本地运行。

如果你在本地环境,你需要创建DataStoreDB,如下所示。

DatastoreDb db = DatastoreDb.Create(projectId, string.Empty, new DatastoreClientImpl(
                new Datastore.DatastoreClient(
                    new Channel("localhost", 8081, ChannelCredentials.Insecure)), new DatastoreSettings()));

我仍在探索是否可以不专门初始化到 localhost

【讨论】:

    【解决方案2】:

    您可以使用 DatastoreDbBuilder 强制数据存储连接到模拟器:

    private DatastoreDb _datastoreDb = new DatastoreDbBuilder
        {
            EmulatorDetection = EmulatorDetection.EmulatorOnly
        }.Build();
        
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-13
      • 1970-01-01
      • 2017-10-18
      • 1970-01-01
      相关资源
      最近更新 更多