雲端腳本疑難解答
環境上傳失敗
如果 Mesh 上傳程式程式期間的 Mesh 雲端腳本階段失敗,且顯示的錯誤為「檢查記錄以取得詳細資訊」,請確定 Unity 控制台中會顯示資訊記錄。 目前有些錯誤會顯示為信息記錄。 未來版本將會改善此設定。
Mesh 雲端腳本套件安裝失敗
- 如果您遇到與套件安裝或 .NET 工具安裝相關的錯誤(
The tool package could not be restored
或Verify your unity package integrity
),請確認您在全域 NuGet 組態中沒有無效的套件來源(C:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config
或計算機上設定的預設 NuGet 組態目錄)。 - 如果您在啟動播放模式時遇到
package is already installed
錯誤,請結束播放模式,並再次啟動它應該會降低這一點。 - 確認目錄
Assets\.MeshCloudScripting\.Packages
的訪問許可權。
按下 [Unity 編輯機播放] 按鈕之後,不會發生任何動作
- 檢查 Unity 記錄中是否有任何錯誤。 特別是,如果您的 Mesh 雲端腳本程式代碼發生編譯錯誤,您會在錯誤記錄檔中看到「雲端腳本建置失敗」。 在此情況下,請開啟 Mesh Cloud Scripting 的 csproj 檔案,並修正錯誤。 如果您從 Visual Studio 建置,則會在組建輸出中更方便地顯示錯誤。
- 如果有其他錯誤,請檢閱此頁面以取得特定錯誤的其他疑難解答資訊。
- 如果沒有錯誤,您的 Mesh 雲端腳本程式代碼中可能會發生運行時錯誤。 使用調試程式附加至您的應用程式,並檢查輸出是否有任何錯誤。
- 如果沒有任何説明, 請回報 Bug。
在 Microsoft Mesh 應用程式中聯結事件時,Mesh 雲端腳本無法運作
- 當您在 Unity 本機預覽場景時,請確定場景如預期般播放。
- 請確定已部署的環境符合 Mesh 雲端腳本服務所使用的 scene.map 。
- 在 Unity 專案中,流覽至 Mesh Cloud Scripting 元件,然後按
Serialize Scene
以強制場景圖形串行化。 - 使用 Mesh 上傳器重新上傳您的環境。
- 在 Unity 專案中,流覽至 Mesh Cloud Scripting 元件,然後按
- 針對已部署的服務測試本機 Unity 版本。
- 如果無法運作,請檢查 Unity 中的記錄是否有任何錯誤。
- 如果沒有任何説明, 請回報 Bug。
- 檢查 Mesh Cloud Scripting 記錄 ,並在錯誤報告中盡可能包含相關信息。
未收到點選
- 您的 Mesh 雲端腳本服務可能會乙太高的頻率傳送訊息,讓系統無法處理。 在此情況下,您的點選可能會實際收到,但由於訊息積壓很大,因此需要很長的時間才會將結果傳播回用戶端。 請嘗試暫時停用您的高頻率更新程序代碼,以查看此問題是否修正。 如果這樣做,請考慮移動以驅動 Unity 動畫工具,而不是從 Mesh Cloud Scripting 更新屬性。
- 如果沒有任何説明, 請回報 Bug。
按下 Play 之後 Unity 會凍結
如果您在 Unity 正在播放時將焦點從 Unity 切換至另一個應用程式,Mesh 雲端腳本服務會繼續執行,將訊息提交至消息佇列。 當您將焦點切換回 Unity 時,它會暫停,直到它完全清空佇列為止。 如果 Mesh 雲端腳本服務進行許多頻繁的狀態變更和/或您已將焦點從 Unity 切換很長一段時間,Unity 可能會凍結一段時間,而發生這種情況。
如何收集記錄
收集 Unity 記錄
在回報問題之前,請將 Verbosity 設定為 Diagnostic。
重現問題,然後傳送 Unity 記錄。 您可以使用 Unity 選單找到記錄檔,此選單預設會儲存在 %LOCALAPPDATA%\Unity\Editor\Editor.log
。
從 Microsoft Mesh 應用程式收集客戶端記錄
使用下列內容,在名為 「startup_settings.json」 的桌面上建立檔案,以設定電腦客戶端記錄:
{
"use_startup_settings": true,
"log_groups": [
{ "name": "CloudScriptingClientSDK", "level": "Debug" },
{ "name": "CloudScriptingUnityRuntime", "level": "Debug" }
]
}
重現問題,然後共用 Unity 記錄。 您可以在 找到Microsoft Mesh 應用程式記錄 %USERPROFILE%\AppData\LocalLow\Microsoft\Microsoft Mesh\Player.log
收集伺服器記錄
A. 記錄資料流
I. Azure 入口網站上記錄串流
若要查看來自 Mesh 雲端腳本服務的記錄,請在 AppService 資源的 [監視] 區段中,單擊 [記錄數據流] 功能表,查看來自容器的記錄,如下圖所示。
II. 透過 Azure CLI 的記錄串流
如果您已在本機電腦上安裝 Azure CLI,您也可以在終端機中執行下列命令,以從本機電腦結尾這些相同的記錄:
az webapp log tail --name <APP_SERVICE_NAME> --resource-group <RESOURCE_GROUP_NAME>
III. 將記錄下載為 zip 檔案
您也可以移至進階工具 (Kudu), 從託管的應用程式服務下載記錄檔。 在左窗格的 [ 開發工具] 區段中,找出 [進階工具 ],然後按兩下 [ 移至 ] 按鈕。
SCM 網站隨即開啟,然後您可以將 Docker 記錄下載為 Zip 檔案,如下所示。
B. Azure 監視器
或者,使用 Azure 監視器,您可以撰寫 KQL (Kusto 查詢語言) 查詢,以挑選您特別感興趣的記錄,從事件、時間範圍等等。 如果您在部署期間核取 [啟用應用程式監視] 方塊,系統會自動為您設定此設定。 如果沒有,請參閱 Azure 監視器的手動設定一節,為您的部署設定 Azure 監視器。
若要使用此功能,請在 瀏覽窗格的 [監視] 區段中,選取 [ 記錄]。
在 [查詢監視] 窗格中,您可以選取您感興趣的記錄。 在撰寫本文時,我們有 “AppServiceConsoleLogs”、“AppServiceHTTPLogs”、“AppServiceAppLogs” 和 “AppServicePlatformLogs”。 若要檢視 Docker 容器中的記錄,您可以在 “AppServiceAppLogs” 和/或 “AppServiceConsoleLogs” 中找到更有用的記錄。
在 [資料表] 選單右側提供的文字框中,輸入下列 KQL 查詢:
AppServiceConsoleLogs
| extend newLog = iif(
ResultDescription has ": Orleans.LifecycleSubject"
or ResultDescription has ": Orleans.Runtime.Catalog"
or ResultDescription has ": Microsoft.Hosting.Lifetime"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.CloudApplication"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstance"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudScriptingBridge"
or ResultDescription has "UNOBSERVED EXCEPTION:"
or ResultDescription has ": Microsoft.SceneAppService.SceneAppHub"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Core.NamedPipesCloudScriptingSessionGrain"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudAppInstanceFactory"
or ResultDescription has ": Microsoft.ClientChannel.Hosting.ProcessLifecycleLoggers"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.ApplicationWorkDispatcher"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Services.CloudScriptingHostedService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Hosting.Launcher.CloudScriptingPreparationService"
or ResultDescription has ": Microsoft.Mesh.CloudScripting.Cloud.Middleware.CloudAppProcessFactory"
or ResultDescription has ": Microsoft.ClientChannel.Resources.ClientLinkGrain"
, 1, 0)
| sort by TimeGenerated asc
| extend logId = row_cumsum(newLog)
| summarize ResultDescription=make_list(ResultDescription), TimeGenerated=min(TimeGenerated) by logId
| extend ResultDescription = strcat_array(ResultDescription, "")
| sort by TimeGenerated desc
| project TimeGenerated, ResultDescription
| where not (ResultDescription has "Broadcasting data of size")
將數據匯出至 csv。
Azure 監視器的手動設定 (選擇性)
如果您在部署期間核取[啟用應用程式監視] ,請略過 。
此設定需要Log Analytics工作區。 如果您沒有現有的工作區,請遵循官方 指南。
開啟 Azure 入口網站,並流覽至您的 Mesh 雲端腳本服務執行所在的 AppService 資源。
按兩下 [監視] 索引標籤,然後捲動至頁面底部。 按兩下 [設定 Azure 監視器] 按鈕
按兩下 [+ 新增診斷設定] 連結,即可設定將傳送至所選工作區的記錄類別。
在提示中,填入 [診斷設定名稱] 字段,然後選取您感興趣的記錄類別(範例:App Service 控制台記錄、App Service 應用程式記錄),然後核取 [傳送至 Log Analytics 工作區] 的方塊,然後選取您慣用的現有 Log Analytics 工作區。
從 App Service 頁面啟用 Application Insights。 這可確保記錄會傳播至Log Analytics工作區。
填寫表單,並確定將它指向建立診斷設定所在的相同工作區。
重新啟動 AppService 並等候幾分鐘。 您現在應該能夠查詢 Azure 監視器中的記錄,如 Azure 監視器一節所述。
調查 Azure 中的雲端腳本部署
在 [網格上傳器 建立環境] 索引標籤中,記下 您選擇的訂用帳戶標識碼 和資源 群組 值。
在 Azure 入口網站和您選取的訂用帳戶中,流覽至資源群組。 您可以從搜尋列搜尋資源組名,或流覽至「資源群組」服務,並在該處尋找您的資源群組。 請確定您位於正確的租用戶和訂用帳戶中。
在資源群組的 [設定] 窗格中,流覽至 [部署]。 這應該包含已對資源群組進行的所有部署清單。
您感興趣的雲端文稿部署如下:
應用程式布建:這是第一個部署執行,用來布建所有必要的雲端腳本資源。 您可以使用 provisionApp 作為 [部署] 視窗中的篩選來識別它。
應用程式設定:這會建立及更新 Web 應用程式的設定。 您可以使用 svc-appsettings 作為 [部署] 視窗中的篩選來識別它。
預備應用程式設定:這會建立及更新 Web 應用程式的預備位置。 您可以使用 svc-staging-appsettings 作為 [部署] 視窗中的篩選來識別它。
應用程式部署:這會用於後續的基礎結構變更。 它會將最新版的 cloudhost Docker 映射部署到 Web 應用程式的預備位置。 這可以使用 deployApp 作為 [部署] 視窗中的篩選來識別。
應用程式位置交換:這會交換 Web 應用程式和預備位置 Web 應用程式中存在的 cloudhost Docker 映像版本。 這可以使用 deployApp-swap 作為 [部署] 視窗中的篩選來識別。
若要查看與部署相關的其他詳細數據,請按兩下部署名稱。 每個資源類型的作業詳細數據包含與部署相關的錯誤訊息。
以下是未成功部署的範例,包括失敗的原因:
後續可採取動作的步驟取決於特定的錯誤訊息。