GAC和\ Inetpub \ wwwroot \ bin都需要ASP.NET DLL

时间:2013-10-17 08:04:56

标签: asp.net dll sharepoint-2007 gac

我将一个ASP.NET应用程序DLL复制到\ Inetpub \ wwwroot \ bin并复制了Sharepoint 2007 TEMPLATES \ Layouts文件夹下的应用程序文件夹,因此我可以从http://sp-portal/sites/sitecoll123/_layouts/aspnetapp/Default.aspx访问该应用程序。它抱怨说:

Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)

然后我将DLL安装到GAC(从\ inetpub \ wwwroot \ bin文件夹中删除后),它无法加载DLL。它抱怨说:

Could not load type 'AppNS.Default'. at System.Web.UI.TemplateParser.GetType(String typeName, Boolean ignoreCase, Boolean throwOnError)

然后,我将DLL复制回\ Inetpub \ wwwroot \ bin,同时仍将组件安装在GAC中。只有这样才有效!我无法解释这一点......我认为在GAC中使用它是一种快速而肮脏的方法,可以轻松访问程序集。为什么需要在两个地方?这是在Sharepoint / MOSS 2007中的_layouts下安装的ASP.NET 3.5应用程序。

1 个答案:

答案 0 :(得分:0)

<%@ Assembly Name="AppNS, Version=1.0.0.0,Culture=neutral,PublicKeyToken=d5e3267159f21fb6" %>
Default.aspx以及页面控件(ASCX)中缺少

,这是引用GAC中安装的程序集所必需的。在两个文件中添加此行后,我能够从\ Inetpub \ wwwroot \ bin删除DLL,并且仍然有一个功能应用程序。