2009-12-14 67 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