2011-12-02 60 views
0

我正在嘗試爲內部應用程序創建一個Web服務接口。我不得不重複使用很多舊東西,其中包括調用MessageBox.Show()在我必須使用的各個地方。我嘗試驗證輸入不會觸及那些電話,但我不能確定我是否成功。.net 4 CAS:刪除特定權限

因此,我想過否認UIPrivilege。我這樣做:

void DoSomething() { 
    new UIPermission(UIPermissionWindow.NoWindows).PermitOnly(); 
    DoTheRealWork(); 
} 

這個作品在這個意義上,它不允許任何用戶界面,但它也不允許該代碼需要無關的權限(如OleDbPermission)。我如何才能拒絕UIPermission,而不是觸及任何其他權限(代碼完全信任)。

UIPermission.Deny()已在.NET Framework 4中過時,並在使用時出現錯誤,因此它不是有效答案)。

回答

0

你究竟想要完成什麼?您的Web服務不應該在UserInteractive模式下運行,因此如果代碼嘗試顯示消息框,它應該拋出運行時異常。如果您成功限制權限(除了異常詳細信息),這與您會看到相同的行爲,那麼爲什麼還要考慮權限限制kludge?




IIS下部署會,在默認情況下,不運行作爲用戶交互的Web服務。但是,如果您正在Cassini開發Web服務器下運行,則情況並非如此,因此您應該檢查IIS部署下的行爲。