Citrix

Citrix 和 WPF,藍色視窗

  • December 12, 2012

我們正在建構將部署在 Citrix 上的 WPF 應用程序。目前,您只會在 Citrix 下看到一個藍色視窗,儘管該應用程序在伺服器本身上執行良好。

網上似乎有一些詳細的問題。

思傑論壇討論

微軟熱修復

我們已經應用了熱修復,但這似乎至少沒有為我們解決問題。

另外,在這個網站上發現了這個相同的問題,但它已被作者刪除,所以沒有答案。

我在 Windows 2003 伺服器上執行 citrix 4.5。我正在嘗試發布一個 WPF 應用程序(任何 WPF 應用程序都有這個問題),我得到的只是一個藍色矩形,該應用程序應該在哪裡。矩形是我期望的視窗的確切大小和形狀,但它只是藍色(看起來像 citrix 桌面背景的顏色)。有任何想法嗎?

這是一個非常古老的問題,但我遇到了同樣的問題。

我不知道為什麼,但是當我有兩台顯示器時,Citrix 只會為任何 WPF 顯示一個藍色視窗。我通過拔掉其中一台顯示器解決了這個問題,由於某種原因,這使得 Citrix 正確顯示 WPF。

我的同事執行的設置與我完全相同,只是我們的第二台顯示器是不同品牌的。他的設置適用於兩台顯示器。

我們在帶有 XP 的 Citrix 上執行 .Net 4.0。

我自己沒有遇到過這個問題,但是由於會話圖形的記憶體使用量增加,我們在雙屏客戶端上遇到了顏色深度降低的情況。

也許藍屏是自動降級的奇怪產物,當您超出會話圖形限制時,Citrix 會啟動?

我不確定 MetaFrame XP,但據我所知,您可以通過 GUI 配置會話圖形限制的最大值為 8.192 kb。你的設置是什麼?

我們做了什麼

我們通過系統資料庫值MaxLVBMem將限制增加到 16 MB ,以便能夠以 24 位色深執行,即使使用雙 1920x1080 顯示器。

HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\icawd\thin16
MaxLVBMem (REG_DWORD) = 0x1000000 (16777216 dec)

我們還將SessionViewSize從 20 增加到 32:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
SessionViewSize (REG_DWORD) = 0x20 (32 dec)

最後,我們將SessionPoolSize從預設的 32 MB(在具有 >2 GB RAM 的系統上)增加到 48 MB:

HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
SessionPoolSize (REG_DWORD) = 0x30 (48 dec)

如 Microsoft KB840342 中所述:

MaxLVBMem 理想情況下應該消耗不超過系統分配的 SessionPoolSize 的 35% 到 40%。如果超過 40% 的 SessionPoolSize 將被所需的 MaxLVBMem 消耗,則向上調整 SessionPoolSize 參數

和:

Microsoft 建議以 16 兆字節為增量提高此設置。不建議將 SessionPoolSize 參數增加到 80 MB 以上。

如果 MaxLVBMem(設置為 16 MB)要消耗最多 35-40% 的 SessionPoolSize,則必須至少為 46 MB。這是通過將值從預設值 32 MB 提高到 48 MB 來實現的。

編輯:

但是,正如 Microsoft 知識庫文章中所述,您必須為您的環境找到平衡點。從 32 MB 增加到 48 MB 的 16 MB 可能不足以解決您的問題。但是,將值增加太多可能會耗盡記憶體池。

如果分配更多記憶體來增加桌面堆,則可能會減少終端伺服器分配給其他資源的記憶體,例如非分頁池、分頁池和系統記憶體。這將影響終端伺服器的性能。此外,當為 SessionViewSize 和 SessionPoolSize 條目分配更多記憶體時,分配給映射核心虛擬空間的記憶體將減少。這反過來又可能使終端伺服器只支持有限數量的使用者。

話雖如此,我們目前看到的跡象表明,48 MB 的 SessionPoolSize 對我們的環境來說可能還不夠,所以我可能會用 64 MB 進行測試。

請務必在更改前後監控您的記憶體池和釋放系統 PTE :-)

參考

當我再次閱讀參考的知識庫文章時,Microsoft 的 KB840342 聽起來像是我會在您的情況下嘗試的第一件事。

引用自:https://serverfault.com/questions/321098