2009-12-14 17 views
-1

有人可以解釋第258頁上的這段(Pro ASP.NET MVC 1.0第6章:使用HTML助手)嗎?在第三方庫中使用HTML Helpers的SecurityExceptions

如果你正在寫一個第三方 庫(而不是一個Web應用程序 )使用了HTML 幫手,從不調用 接受匿名對象重載。始終呼叫 接受 字典的重載。否則,使用您的 庫的應用程序作者可能會遇到 SecurityExceptions。

回答

2

如果傳遞匿名對象的助手,那麼就應該使用反射。

需要反思和特權,如果沒有這樣的那麼SecurityExpection-S將被拋出。

1

匿名類型在它們被定義的程序集內部。

MVC是[SecurityTransparent],因此對CLR它看起來像什麼,實際上是被你的應用程序執行的MVC一樣。如果您的第三方庫也是[SecurityTransparent](它確實應該)被部署到GAC,那麼它會出現您的應用程序代碼試圖通過GACed組件進行私人反射的CLR。如果您的應用程序在Medium trust中運行,或者沒有反射權限,則會導致SecurityException。

編輯:這並不意味着在自己的代碼的第三方庫不能使用匿名對象。它只是意味着他們不應該通過那些嘗試通過這些對象執行反射物體MVC API,如htmlAttributesrouteValues