我对Sharepoint编程非常陌生,就像我团队的其他成员一样。我们决定使用智能部件作为我们在sharepoint和我们的开发工作之间的桥梁。经过一番努力,我们开始运行。但问题是,当我使用一个简单的用户控件进行测试时,使用sharepoint om代码获取文档库中的文件名称,sharepoint给了我一个相当有用的“未知错误已经发生”。这个代码在aspx页面内工作正常。我编写了另一个简单的测试用户控件,它只执行一个Response.Write()行来检查是否存在执行代码的问题,但是这个也适用于智能部分。
代码就像
protected void Button1_Click(object sender, EventArgs e)
{
Microsoft.SharePoint.SPSite srv1 =
new SPSite("http://server:port/");
SPWeb web = srv1.OpenWeb();
var list = web.GetFolder("http://server:port/documentLibrary");
for (int i = 0; i < list.Files.Count; i++)
{
ListBox1.Items.Add(list.Files[i].Name);
}
}
我们可能遗失或做错了什么? 非常感谢...
答案 0 :(得分:2)
AFAIK,自SharePoint 2003以来,并不真正需要智能部件。为什么不创建常规用户控件并将其放在/ ControlTemplates文件夹中?如果合适,将其部署为具有相关代码的功能的一部分......
此外,更新Web.Config文件以显示有意义的错误消息:
答案 1 :(得分:1)
请注意,您通常应将SPSite和SPWeb对象包装在using子句中,因为这些是非托管对象,如下所示: http://msdn.microsoft.com/en-us/library/aa973248.aspx
protected void Button1_Click(object sender, EventArgs e)
{
using (Microsoft.SharePoint.SPSite srv1 = new SPSite("http://server:port/"))
{
using (SPWeb web = srv1.OpenWeb())
{
var list = web.GetFolder("http://server:port/documentLibrary");
for (int i = 0; i < list.Files.Count; i++)
{
ListBox1.Items.Add(list.Files[i].Name);
}
}
}
}
答案 2 :(得分:0)
好的,它已经解决了,感谢大家提供的信息和帮助。
关于信任级别,我在相关网站集的web.config文件中将推力级别设置为“WSS_Medium”。
<trust level="WSS_Medium" originUrl="" />
我在Jan Tielen的博客here
找到了这个解决方案(以及一些关于主题的更多相关信息)