我自己写了个webpart,SPQuery太麻烦了,为了写查询语句方便,我引用了别人写的一个dll文件(封装好了一些SPQuery查询方法),一把dll文件放入assembly中了,但是一运行就报错,求兄弟们给个解决办法。
部分代码如下
- C# code
string queryStr = "SELECT * FROM MyList001 WHERE ID>1"; FriendlyQuery query = new FriendlyQuery(web, queryStr); query.Scope = FriendlyQuery.QueryScope.AllItems; gridview.DataSource = query.GetItems().GetDataTable(); gridview.DataBind();
,运行就报
- HTML code
Title:System.Security.SecurityException: 该程序集不支持部分受信任的调用方。 在 MyWebPart.WebPartTest.BindGridView() 在 MyWebPart.WebPartTest.GridViewLoad(Object sender, EventArgs e) 在 System.Web.UI.Control.OnLoad(EventArgs e) 在 System.Web.UI.WebControls.DataBoundControl.OnLoad(EventArgs e) 在 System.Web.UI.Control.LoadRecursive() 在 System.Web.UI.Control.AddedControl(Control control, Int32 index) 在 System.Web.UI.ControlCollection.Add(Control child) 在 MyWebPart.WebPartTest.CreateChildControls() 失败的操作是: LinkDemand 失败的程序集的区域是: MyComputer
如果改为SPQuery就不报错。
- C# code
SPQuery spquery = new SPQuery(); spquery.Query = string.Format("<Where><Geq><FieldRef Name='{0}' /><Value Type='Counter'>{1}</Value></Geq></Where>", "ID", "1"); gridview.DataSource = list.GetItems(spquery).GetDataTable(); gridview.DataBind();
------解决方案--------------------
你需要在webconfig里添加你的DLL 信息 或者加到GAC中 重新启动IIS
------解决方案--------------------
你要把你的web part所在的dll强签名后,放入GAC,并且在web.config中添加类似下面的东东:
- XML code
<SafeControl Assembly="YouAssemblyName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=84dd8b59e2770812" Namespace="YouNamespaceName" TypeName="*" Safe="True" />