

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 一般故障診斷
<a name="troubleshooting-general"></a>

以下是使用 Amazon WorkSpaces 應用程式時可能發生的一般問題。

**Topics**
+ [SAML 聯合無法運作。使用者無權檢視 WorkSpaces 應用程式。](#troubleshooting-13)
+ [在從 ADFS 入口網站聯合之後，我的串流工作階段無法啟動。我收到錯誤「很抱歉，連線已停止」。](#troubleshooting-adfs-upn)
+ [我收到重新導向 URI 無效的錯誤。](#troubleshooting-14)
+ [我的映像建置器和機群從未達到執行狀態。我的 DNS 伺服器在 Simple AD 目錄中。](#fleets-image-builders-dont-run-simple-ad)
+ [我已經為我的使用者啟用應用程式設定持久性，但他們仍然無法儲存或載入持久性應用程式設定。](#app-settings-save-load-failure)
+ [我已為使用者啟用應用程式設定的保存，但針對某些串流應用程式，使用者密碼不會在工作階段中保存。](#app-settings-passwords-not-persisting)
+ [Google Chrome 資料正在填入包含我使用者持久性應用程式設定的 VHD 檔案。這讓他們的設定無法保存。我要如何管理 Chrome 描述檔？](#chrome-filling-up-app-settings-VHD)
+ [我為內嵌 WorkSpaces 應用程式串流工作階段設定自訂網域，但我的 WorkSpaces 應用程式串流 URLs 不會重新導向至我的自訂網域。](#embedded-streaming-sessions-streaming-urls-not-redirected-to-custom-domain)
+ [我在已啟用智慧卡的 WorkSpaces 應用程式機群上啟動應用程式，而且應用程式可用於身分驗證的憑證數量有限 （或無）。](#no-or-limited-certificates-for-authentication-on-smartcard-fleet)
+ [認證傳播服務未在已啟用智慧卡的 WorkSpaces 應用程式機群上啟動。](#certification-propogation-not-starting-on-smartcard-fleet)
+ [SAML 身分驗證之後，我無法使用 Active Directory 使用者名稱或密碼登入。](#troubleshooting-saml-auth)

## SAML 聯合無法運作。使用者無權檢視 WorkSpaces 應用程式。
<a name="troubleshooting-13"></a>

由於針對 SAML 2.0 聯合 IAM 角色嵌入的內嵌政策未包含堆疊 ARN 的許可，因此可能發生此情況。IAM 角色由存取 WorkSpaces 應用程式堆疊的聯合身分使用者擔任。請編輯角色許可來包含堆疊 ARN。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [Amazon WorkSpaces 應用程式與 SAML 2.0 整合](external-identity-providers.md) 和[透過 AWS進行 SAML 2.0 聯合故障診斷](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_saml.html)。

## 在從 ADFS 入口網站聯合之後，我的串流工作階段無法啟動。我收到錯誤「很抱歉，連線已停止」。
<a name="troubleshooting-adfs-upn"></a>

將 **NameID** SAML 屬性的宣告規則的**傳入宣告類型**設定為 **UPN**，然後再次嘗試連線。

## 我收到重新導向 URI 無效的錯誤。
<a name="troubleshooting-14"></a>

此錯誤是因為 WorkSpaces 應用程式堆疊轉送狀態 URL 格式不正確或無效而發生。請確定聯合設定中設定的轉送狀態與透過 WorkSpaces 應用程式主控台顯示在堆疊詳細資訊中的堆疊轉送狀態相同。如果問題相同且問題仍然存在，請聯絡 AWS 支援。如需詳細資訊，請參閱[Amazon WorkSpaces 應用程式與 SAML 2.0 整合](external-identity-providers.md)。

## 我的映像建置器和機群從未達到執行狀態。我的 DNS 伺服器在 Simple AD 目錄中。
<a name="fleets-image-builders-dont-run-simple-ad"></a>

WorkSpaces 應用程式倚賴 VPC 內的 DNS 伺服器，針對不存在的本機網域名稱傳回不存在的網域 (NXDOMAIN) 回應。這可讓 WorkSpaces 應用程式受管網路界面與管理伺服器通訊。

當您使用 Simple AD 建立目錄時， 會 AWS Directory Service 建立兩個網域控制站，其也會代表您做為 DNS 伺服器。由於網域控制站不提供 NXDOMAIN 回應，因此無法與 WorkSpaces 應用程式搭配使用。

## 我已經為我的使用者啟用應用程式設定持久性，但他們仍然無法儲存或載入持久性應用程式設定。
<a name="app-settings-save-load-failure"></a>

WorkSpaces 應用程式會自動儲存在 Windows 執行個體上特定位置建立的應用程式設定。只有在您的應用程式將設定儲存到下列其中一個位置時，才會儲存這些設定。如需支援的位置清單，請參閱[應用程式設定持續性運作方式](how-it-works-app-settings-persistence.md)。若您的應用程式已設為儲存到 C:\$1Users\$1%username%，但您使用者的應用程式設定仍無法在工作階段之間儲存，這表示掛載點可能尚未建立。這會讓設定無法儲存到包含您使用者持久性應用程式設定的 VHD 檔案。

若要解決此問題，請遵循這些步驟：

1. 在機群執行個體上，開啟檔案總管並瀏覽到位於 C:\$1Users\$1%username% 的使用者描述檔目錄。

1. 確認此目錄是否包含 symlink，然後執行以下其中一項作業：
   + 若有 symlink，請確認它指向 D:\$1%username%。
   + 若沒有 symlink，請嘗試刪除 C:\$1Users\$1%username% 目錄。

     若您無法刪除此目錄，請找出目錄中無法刪除的檔案，以及建立該檔案的應用程式。然後聯絡應用程式廠商以取得如何變更檔案許可或移動檔案的資訊。

     如果您可以刪除此目錄，請聯絡 AWS 支援 以取得進一步指引以解決此問題。如需詳細資訊，請參閱 [AWS 支援 中心](https://console.aws.amazon.com/support/home#/)。

## 我已為使用者啟用應用程式設定的保存，但針對某些串流應用程式，使用者密碼不會在工作階段中保存。
<a name="app-settings-passwords-not-persisting"></a>

此問題的發生時機：
+ 使用者是 Microsoft Outlook 之類的串流應用程式，這類應用程式會使用 [Microsoft 資料保護 API](https://docs.microsoft.com/en-us/windows/desktop/seccng/cng-dpapi)。
+ 已針對未加入 Active Directory 網域的串流執行個體啟用應用程式設定保存。

在未將串流執行個體加入 Active Directory 網域的案例下，每個機群執行個體上的 Windows 使用者和 PhotonUser 都是不同的。由於 DPAPI 安全模組運作的方式，不會為在此案例中使用 DPAPI 的應用程式保留使用者的密碼。在串流執行個體已加上 Active Directory 網域且該使用者是網域使用者的案例中，Windows 使用者名稱是登入使用者的名稱，而系統會為使用 DPAPI 的應用程式保留使用者的密碼。

## Google Chrome 資料正在填入包含我使用者持久性應用程式設定的 VHD 檔案。這讓他們的設定無法保存。我要如何管理 Chrome 描述檔？
<a name="chrome-filling-up-app-settings-VHD"></a>

根據預設，Google Chrome 會將使用者資料和本機磁碟快取存放在 Windows 使用者描述檔中。若要防止本機磁碟快取資料填入包含使用者持久性應用程式設定的 VHD 檔案，請設定 Chrome 以僅儲存使用者資料。若要執行此作業，請在機群執行個體上，以管理員身分開啟命令列，並使用以下參數啟動 Chrome 來變更磁碟快取的位置：

`chrome.exe --disk-cache-dir C:\`*path-to-unsaved-location*`\`

使用這些參數執行 Chrome 可防止磁碟快取在 WorkSpaces 應用程式工作階段之間保留。

## 我為內嵌 WorkSpaces 應用程式串流工作階段設定自訂網域，但我的 WorkSpaces 應用程式串流 URLs 不會重新導向至我的自訂網域。
<a name="embedded-streaming-sessions-streaming-urls-not-redirected-to-custom-domain"></a>

若要解決此問題，請確認當您建立 WorkSpaces 應用程式串流 URL 時，您已將 WorkSpaces 應用程式端點取代為自訂網域。根據預設，WorkSpaces 應用程式串流 URLs 的格式如下：

```
https://appstream2.region.aws.amazon.com/authenticate?parameters=authenticationcode
```

若要取代串流 URL 中的預設 WorkSpaces 應用程式端點，請將 URL 中的**https://appstream2.***區域*取代為您的自訂網域。例如，如果您的自訂網域是 **training.example.com**，則新的串流 URL 必須遵循此格式：

```
https://training.example.com/authenticate?parameters=authenticationcode
```

如需為內嵌 WorkSpaces 應用程式串流工作階段設定自訂網域的詳細資訊，請參閱 [使用自訂網域的設定需求](create-streaming-url-user-authentication.md#configuration-requirements-custom-domains)。

## 我在已啟用智慧卡的 WorkSpaces 應用程式機群上啟動應用程式，而且應用程式可用於身分驗證的憑證數量有限 （或無）。
<a name="no-or-limited-certificates-for-authentication-on-smartcard-fleet"></a>

若應用程式在[憑證傳播](https://docs.microsoft.com/en-us/windows/security/identity-protection/smart-cards/smart-card-certificate-propagation-service)服務處於執行中狀態之前啟動，就會發生這種情況。

若要解決此問題，請使用 PowerShell 模組 [Get-Service](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-service?view=powershell-7.1) 查詢憑證傳播服務的狀態，並且在您啟動應用程式之前，確定該服務處於執行中狀態。

例如，在憑證傳播服務執行中之前，下列指令碼無法啟動應用程式：

```
$logFile = "$Env:TEMP\AS2\Logging\$(Get-Date -Format "yyyy-MM-dd-HH-mm-ss")_applaunch.log"
New-Item -path $logfile -ItemType File -Force | Out-Null

Function Write-Log {
    Param ([string]$message)
    $stamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss"
    $logoutput = "$stamp $message"
    Add-content $logfile -value $logoutput
}

if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) {

    Write-Log "The Certificate Propagation Service is running. Launching Application..."
    try {
        Start-Process -FilePath "Path to Application" -WindowStyle Maximized -ErrorAction Stop
    }
    catch {
        Write-Log "There was an error launching the application: $_"
        
    }
    
}   
else {

    do {
        
        $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status
        Write-Log "The Certificate Propagation service status is currently $status"
        Start-Sleep -Seconds 2

    
    } until (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running)
    
    write-log "The Certificate Propagation Service is running. Launching Application..."
    try {
        Start-Process -FilePath "Path to Application" -WindowStyle Maximized -ErrorAction Stop
    }
    catch {
        Write-Log "There was an error launching the application: $_"
        
    }
}
```

## 認證傳播服務未在已啟用智慧卡的 WorkSpaces 應用程式機群上啟動。
<a name="certification-propogation-not-starting-on-smartcard-fleet"></a>

如果[憑證傳播](https://docs.microsoft.com/en-us/windows/security/identity-protection/smart-cards/smart-card-certificate-propagation-service)服務未啟動，服務的啟動類型可能設定為**已停用**。若要解決此問題，請在用於建立機群映像的 WorkSpaces 應用程式映像建置器上，啟動 Windows Services Microsoft 管理主控台，並確認憑證傳播服務的啟動類型未設定為**已停用**。

如果啟動類型未設定為**已停用**，且 WorkSpaces 應用程式機群上的服務仍未啟動，請在機群執行個體啟動時，使用 PowerShell 模組 [Start-Service](https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-service?view=powershell-7.1) 來啟動憑證傳播服務。

例如，下列 PowerShell 指令碼會在偵測到服務處於已停止狀態時啟動服務：

```
$logFile = "C:\AppStream\Logging\$(Get-Date -Format "yyyy-MM-dd-HH-mm-ss")_certpropcheck.log"
New-Item -path $logfile -ItemType File -Force | Out-Null

Function Write-Log {
    Param ([string]$message)
    $stamp = Get-Date -Format "yyyy/MM/dd HH:mm:ss"
    $logoutput = "$stamp $message"
    Add-content $logfile -value $logoutput
}

if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running) {

    Write-Log "The Certificate Propagation Service is running. Exiting..."
    Exit
}
else {
    do {

        if (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Stopped) {

            Write-Log "The Certificate Propagation Service is stopped, attepmting to start..."
            try {
                Start-Service -Name "CertPropSvc" -ErrorAction Stop
                
            }
            catch {
                Write-Log "There was a problem starting the service: $_"
                break               
            }

            $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status
            Write-Log "The Certificate Propagation service status is currently $status"
            

        }
        else {
        
            $status = Get-Service "CertPropSvc" | select-object -ExpandProperty Status
            Write-Log "The Certificate Propagation service status is currently $status"
            break
        }
    
    } until (Get-Service -Name "CertPropSvc" | Where-Object -Property Status -eq Running)
}
```

## SAML 身分驗證之後，我無法使用 Active Directory 使用者名稱或密碼登入。
<a name="troubleshooting-saml-auth"></a>

SAML 宣告中的 nameID 必須與 Active Directory 中的使用者名稱相符。調整特定屬性後，某些 IdPs需要更新、重新整理或重新部署。如果您進行調整且未反映在 SAML 擷取中，請參閱 IdP 的文件或支援計畫，了解讓變更生效所需的特定步驟。