Dot-Net

Cosmos DB 模擬器:無法獲取優惠的授權標頭

  • March 12, 2019

我將Azure Cosmos DB Emulator從版本 1.22 升級到了 2.0。現在,當我轉到本地 Data Explorer時,Explorer 選項卡中沒有載入任何內容,我看到錯誤

無法獲取優惠的授權標頭:{“readyState”:4,“responseText”:"{"code":"InternalServerError","message":"處理此請求時發生未知伺服器錯誤。 \r\nActivityId: 48afdb03-e04b-4a5e-b568-e268c32eb10f, Microsoft.Azure.Documents.Common/2.0.0.0"}",“re​​sponseJSON”:{“code”:“InternalServerError”,“message”:“Unknown處理此請求時發生伺服器錯誤。\r\nActivityId: 48afdb03-e04b-4a5e-b568-e268c32eb10f, Microsoft.Azure.Documents.Common/2.0.0.0”},“status”:500,“statusText”:“error” }

我已嘗試重新安裝它,重新啟動 PC,並以管理員身份執行它。

我能做些什麼來解決這個問題?

看起來 2.0.0 CosmosDB Emulator 要求您重置其中的數據。這是唯一為我解決的問題。

您可以通過 CosmosDB 模擬器圖示執行此操作

在此處輸入圖像描述

重置後,它將起作用。還要記住,2.0 之前的 SDK 不能在新的模擬器上執行。

就我而言,我必須解除安裝/重新安裝模擬器(您可以從https://aka.ms/cosmosdb-emulator下載它),然後在重新啟動後,我在模擬器的上下文菜單中執行了“重置數據…” (如尼克所述),然後它又開始工作了。

在我的情況下,單獨重置數據並不能解決問題。

我找到了以下方法讓它再次工作(Windows 10 Enterprise 上的模擬器版本 2.1.4.0 - Build 1803):

  1. 啟動模擬器,以便獲得系統托盤圖示。等到您收到“模擬器已啟動”消息。啟動後檢查模擬器資源管理器是否正常工作。如果它掛起(永遠顯示三個點動畫),請繼續執行步驟 2。
  2. 重置數據:通過系統托盤,右鍵點擊,上下文菜單,選擇“重置數據…”。等到模擬器出現(“模擬器啟動”)。繼續第 3 步。
  3. 關閉模擬器:通過系統托盤,右鍵點擊,上下文菜單,選擇“退出”
  4. 重啟你的電腦
  5. 重新啟動後,啟動模擬器(轉到 1.)。現在模擬器資源管理器應該可以工作了(您可以通過“新集合”創建一個集合來測試它)。

筆記:

  • “重置數據…”會刪除本地 Cosmos DB 模擬器文件夾,然後停止並重新啟動模擬器服務。
  • 在開始任何 VPN 連接(例如公司的 VPN)之前啟動它似乎很重要 - 除了正常的 Winsocket 之外,模擬器還依賴於 RegisteredIO API,因此第 3 方軟體可能會產生不希望的副作用。
  • 如果您在筆記型電腦上執行模擬器,建議您在電腦進入睡眠/休眠模式之前將其停止。這是為了確保模擬器的數據保持一致,並防止您經常重置它。
  • 從版本 2.2.1 開始,有一個新的命令行選項/disablerio可以切換模擬器以使用正常 Winsockets API。如果您在使用 VPN 或第 3 方軟體時遇到任何問題,您可以嘗試使用此開關。在命令提示符(管理員 shell)中,鍵入:

cd /d "%ProgramFiles%\Azure Cosmos DB Emulator"

CosmosDB.Emulator.exe /disablerio


關於模擬器的一些細節

這是模擬器使用的目錄:

C:\使用者\

$$ userid $$\AppData\Local\CosmosDBEmulator

應用程序本身可以在這裡找到:

C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe

雖然模擬器本身沒有很多配置選項,但在上面提到的目錄中有 3 個配置文件ComputeMachine.ConfigMachine.ConfigGatewayMachine.Config.

如果您啟用跟踪日誌,CosmosDB 團隊可以提供幫助。請執行下列操作:

要收集**調試跟踪,**請從管理命令提示符執行以下命令:

  1. cd /d "%ProgramFiles%\Azure Cosmos DB Emulator"
  2. CosmosDB.Emulator.exe /shutdown. 查看系統托盤以確保程序已關閉,這可能需要一分鐘。您也可以在 Azure Cosmos DB 模擬器使用者界面中點擊退出。
  3. CosmosDB.Emulator.exe /starttraces
  4. CosmosDB.Emulator.exe
  5. 重現問題。如果 Data Explorer 不工作,您只需等待瀏覽器打開幾秒鐘即可擷取錯誤。
  6. CosmosDB.Emulator.exe /stoptraces
  7. 導航%ProgramFiles%\Azure Cosmos DB Emulator並找到該docdbemulator_000001.etl文件。
  8. .etl文件連同重現步驟一起發送到askcosmosdb@microsoft.com調試。

**更新:**我收到了 CosmosDB 開發團隊的回复,我已將其包含在此答案中。如果您發現了什麼,請通過此答案下方的評論告訴我。請注意,我經常用於開發 CosmosDB 解決方案的這個工具通常執行良好。

引用自:https://stackoverflow.com/questions/52708774