Cosmos DB 模擬器:無法獲取優惠的授權標頭
我將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"}",“responseJSON”:{“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):
- 啟動模擬器,以便獲得系統托盤圖示。等到您收到“模擬器已啟動”消息。啟動後檢查模擬器資源管理器是否正常工作。如果它掛起(永遠顯示三個點動畫),請繼續執行步驟 2。
- 重置數據:通過系統托盤,右鍵點擊,上下文菜單,選擇“重置數據…”。等到模擬器出現(“模擬器啟動”)。繼續第 3 步。
- 關閉模擬器:通過系統托盤,右鍵點擊,上下文菜單,選擇“退出”
- 重啟你的電腦
- 重新啟動後,啟動模擬器(轉到 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
- 如果遇到連接問題,請檢查CosmosDB 模擬器的 SSL 證書。
關於模擬器的一些細節
這是模擬器使用的目錄:
C:\使用者\
$$ userid $$\AppData\Local\CosmosDBEmulator
應用程序本身可以在這裡找到:
C:\Program Files\Azure Cosmos DB Emulator\Microsoft.Azure.Cosmos.Emulator.exe
雖然模擬器本身沒有很多配置選項,但在上面提到的目錄中有 3 個配置文件
ComputeMachine.Config:Machine.Config和GatewayMachine.Config.如果您啟用跟踪日誌,CosmosDB 團隊可以提供幫助。請執行下列操作:
要收集**調試跟踪,**請從管理命令提示符執行以下命令:
cd /d "%ProgramFiles%\Azure Cosmos DB Emulator"CosmosDB.Emulator.exe /shutdown. 查看系統托盤以確保程序已關閉,這可能需要一分鐘。您也可以在 Azure Cosmos DB 模擬器使用者界面中點擊退出。CosmosDB.Emulator.exe /starttracesCosmosDB.Emulator.exe- 重現問題。如果 Data Explorer 不工作,您只需等待瀏覽器打開幾秒鐘即可擷取錯誤。
CosmosDB.Emulator.exe /stoptraces- 導航
%ProgramFiles%\Azure Cosmos DB Emulator並找到該docdbemulator_000001.etl文件。- 將
.etl文件連同重現步驟一起發送到askcosmosdb@microsoft.com調試。**更新:**我收到了 CosmosDB 開發團隊的回复,我已將其包含在此答案中。如果您發現了什麼,請通過此答案下方的評論告訴我。請注意,我經常用於開發 CosmosDB 解決方案的這個工具通常執行良好。
