0

我对 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);
            }
}

我们可能遗漏或做错了什么?提前谢谢了...

4

3 回答 3

1

AFAIK,自 SharePoint 2003 以来就不再需要智能部件。为什么不直接创建一个常规用户控件并将其放在 /ControlTemplates 文件夹中?将其部署为具有相关代码的功能的一部分,如果合适的话......

此外,更新您的 Web.Config 文件以显示有意义的错误消息:

  • customErrors=off
  • 通过将 CallStack=”true” 添加到 SafeMode 标记来启用堆栈跟踪
  • 将编译调试属性设置为“true”
于 2009-11-23T16:37:36.617 回答
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);
   }
  }
 }
}
于 2009-11-23T20:06:30.797 回答
0

好的,已经解决了,谢谢大家的信息和帮助。

这是关于信任级别的,我在相关网站集的 web.config 文件中将推力级别设置为“WSS_Medium”。

<trust level="WSS_Medium" originUrl="" />

我在这里的 Jan Tielen 的博客中找到了这个解决方案(以及一些更相关的主题信息)

于 2009-11-24T12:34:17.283 回答