共用方式為


雲端腳本疑難解答

環境上傳失敗

如果 Mesh 上傳程式程式期間的 Mesh 雲端腳本階段失敗,且顯示的錯誤為「檢查記錄以取得詳細資訊」,請確定 Unity 控制台中會顯示資訊記錄。 目前有些錯誤會顯示為信息記錄。 未來版本將會改善此設定。

Mesh 雲端腳本套件安裝失敗

  1. 如果您遇到與套件安裝或 .NET 工具安裝相關的錯誤(The tool package could not be restoredVerify your unity package integrity),請確認您在全域 NuGet 組態中沒有無效的套件來源( C:\Users\<UserName>\AppData\Roaming\NuGet\NuGet.config 或計算機上設定的預設 NuGet 組態目錄)。
  2. 如果您在啟動播放模式時遇到 package is already installed 錯誤,請結束播放模式,並再次啟動它應該會降低這一點。
  3. 確認目錄 Assets\.MeshCloudScripting\.Packages的訪問許可權。

按下 [Unity 編輯機播放] 按鈕之後,不會發生任何動作

  1. 檢查 Unity 記錄中是否有任何錯誤。 特別是,如果您的 Mesh 雲端腳本程式代碼發生編譯錯誤,您會在錯誤記錄檔中看到「雲端腳本建置失敗」。 在此情況下,請開啟 Mesh Cloud Scripting 的 csproj 檔案,並修正錯誤。 如果您從 Visual Studio 建置,則會在組建輸出中更方便地顯示錯誤。
  2. 如果有其他錯誤,請檢閱此頁面以取得特定錯誤的其他疑難解答資訊。
  3. 如果沒有錯誤,您的 Mesh 雲端腳本程式代碼中可能會發生運行時錯誤。 使用調試程式附加至您的應用程式,並檢查輸出是否有任何錯誤。
  4. 如果沒有任何説明, 請回報 Bug

在 Microsoft Mesh 應用程式中聯結事件時,Mesh 雲端腳本無法運作

  1. 當您在 Unity 本機預覽場景時,請確定場景如預期般播放。
  2. 請確定已部署的環境符合 Mesh 雲端腳本服務所使用的 scene.map
    1. 在 Unity 專案中,流覽至 Mesh Cloud Scripting 元件,然後按 Serialize Scene 以強制場景圖形串行化。
    2. 使用 Mesh 上傳器重新上傳您的環境。
  3. 針對已部署的服務測試本機 Unity 版本
    • 如果無法運作,請檢查 Unity 中的記錄是否有任何錯誤。
  4. 如果沒有任何説明, 請回報 Bug

未收到點選

  1. 您的 Mesh 雲端腳本服務可能會乙太高的頻率傳送訊息,讓系統無法處理。 在此情況下,您的點選可能會實際收到,但由於訊息積壓很大,因此需要很長的時間才會將結果傳播回用戶端。 請嘗試暫時停用您的高頻率更新程序代碼,以查看此問題是否修正。 如果這樣做,請考慮移動以驅動 Unity 動畫工具,而不是從 Mesh Cloud Scripting 更新屬性。
  2. 如果沒有任何説明, 請回報 Bug

按下 Play 之後 Unity 會凍結

如果您在 Unity 正在播放時將焦點從 Unity 切換至另一個應用程式,Mesh 雲端腳本服務會繼續執行,將訊息提交至消息佇列。 當您將焦點切換回 Unity 時,它會暫停,直到它完全清空佇列為止。 如果 Mesh 雲端腳本服務進行許多頻繁的狀態變更和/或您已將焦點從 Unity 切換很長一段時間,Unity 可能會凍結一段時間,而發生這種情況。

如何收集記錄

收集 Unity 記錄

在回報問題之前,請將 Verbosity 設定Diagnostic

診斷記錄設定

重現問題,然後傳送 Unity 記錄。 您可以使用 Unity 選單找到記錄檔,此選單預設會儲存在 %LOCALAPPDATA%\Unity\Editor\Editor.log

收集 Unity 記錄

從 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), 從託管的應用程式服務下載記錄檔。 在左窗格的 [ 開發工具] 區段中,找出 [進階工具 ],然後按兩下 [ 移至 ] 按鈕。

AppService 進階工具

SCM 網站隨即開啟,然後您可以將 Docker 記錄下載為 Zip 檔案,如下所示。

Kudu

B. Azure 監視器

或者,使用 Azure 監視器,您可以撰寫 KQL (Kusto 查詢語言) 查詢,以挑選您特別感興趣的記錄,從事件、時間範圍等等。 如果您在部署期間核取 [啟用應用程式監視] 方塊,系統會自動為您設定此設定。 如果沒有,請參閱 Azure 監視器手動設定一節,為您的部署設定 Azure 監視器。

若要使用此功能,請在 瀏覽窗格的 [監視] 區段中,選取 [ 記錄]。

AppService 監視

在 [查詢監視] 窗格中,您可以選取您感興趣的記錄。 在撰寫本文時,我們有 “AppServiceConsoleLogs”、“AppServiceHTTPLogs”、“AppServiceAppLogs” 和 “AppServicePlatformLogs”。 若要檢視 Docker 容器中的記錄,您可以在 “AppServiceAppLogs” 和/或 “AppServiceConsoleLogs” 中找到更有用的記錄。

Azure 監視窗格

在 [資料表] 選單右側提供的文字框中,輸入下列 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")

Azure 監視輸入欄位

將數據匯出至 csv。

Azure 監視導出

Azure 監視器的手動設定 (選擇性)

如果您在部署期間核取[啟用應用程式監視] ,請略過 。

此設定需要Log Analytics工作區。 如果您沒有現有的工作區,請遵循官方 指南

  1. 開啟 Azure 入口網站,並流覽至您的 Mesh 雲端腳本服務執行所在的 AppService 資源。

  2. 按兩下 [監視] 索引標籤,然後捲動至頁面底部。 按兩下 [設定 Azure 監視器] 按鈕

    AppService 監視索引標籤

  3. 按兩下 [+ 新增診斷設定] 連結,即可設定將傳送至所選工作區的記錄類別。

    診斷設定

  4. 在提示中,填入 [診斷設定名稱] 字段,然後選取您感興趣的記錄類別(範例:App Service 控制台記錄、App Service 應用程式記錄),然後核取 [傳送至 Log Analytics 工作區] 的方塊,然後選取您慣用的現有 Log Analytics 工作區。

    建立診斷設定

  5. 從 App Service 頁面啟用 Application Insights。 這可確保記錄會傳播至Log Analytics工作區。 啟用 App Insights

  6. 填寫表單,並確定將它指向建立診斷設定所在的相同工作區。

    App Insights 表單

  7. 重新啟動 AppService 並等候幾分鐘。 您現在應該能夠查詢 Azure 監視器中的記錄,如 Azure 監視器一節所述。

調查 Azure 中的雲端腳本部署

  1. 在 [網格上傳器 建立環境] 索引標籤中,記下 您選擇的訂用帳戶標識碼 和資源 群組 值。

    _______________

  2. 在 Azure 入口網站和您選取的訂用帳戶中,流覽至資源群組。 您可以從搜尋列搜尋資源組名,或流覽至「資源群組」服務,並在該處尋找您的資源群組。 請確定您位於正確的租用戶和訂用帳戶中。

  3. 在資源群組的 [設定] 窗格中,流覽至 [部署]。 這應該包含已對資源群組進行的所有部署清單。

  4. 您感興趣的雲端文稿部署如下:

  • 應用程式布建:這是第一個部署執行,用來布建所有必要的雲端腳本資源。 您可以使用 provisionApp 作為 [部署] 視窗中的篩選來識別它。

  • 應用程式設定:這會建立及更新 Web 應用程式的設定。 您可以使用 svc-appsettings 作為 [部署] 視窗中的篩選來識別它。

  • 預備應用程式設定:這會建立及更新 Web 應用程式的預備位置。 您可以使用 svc-staging-appsettings 作為 [部署] 視窗中的篩選來識別它。

  • 應用程式部署:這會用於後續的基礎結構變更。 它會將最新版的 cloudhost Docker 映射部署到 Web 應用程式的預備位置。 這可以使用 deployApp 作為 [部署] 視窗中的篩選來識別

  • 應用程式位置交換:這會交換 Web 應用程式和預備位置 Web 應用程式中存在的 cloudhost Docker 映像版本。 這可以使用 deployApp-swap 作為 [部署] 視窗中的篩選來識別

    _______________

若要查看與部署相關的其他詳細數據,請按兩下部署名稱。 每個資源類型的作業詳細數據包含與部署相關的錯誤訊息。

_______________

以下是未成功部署的範例,包括失敗的原因:

_______________

_______________

後續可採取動作的步驟取決於特定的錯誤訊息。

如何回報問題

  1. 收集 所有可用的記錄。
  2. 遵循 意見 反應指引。