以编程方式在运行时访问Sharepoint列表(无需在设计时创建服务引用)

时间:2011-06-08 22:44:00

标签: wcf sharepoint sharepoint-2010

我正在创建一个应用程序,最终用户可以配置该应用程序以访问用户输入的各种不同SharePoint网站上的SharePoint列表。

我在网上看到的所有阅读SharePoint列表的示例都是以下形式:

  1. 打开或创建Visual Studio 项目。
  2. 在解决方案资源管理器中 右键单击“引用”节点,然后单击“确定” 然后单击添加服务引用。
  3. 在“地址”框中,键入要的URL 目标网站并追加 /_vti_bin/ListData.svc。例如, 该网站的地址 intranet.wingtip.com会 http://intranet.wingtip.com/_vti_bin/ListData.svc
  4. 更改中的默认名称 ServiceReference1中的命名空间框 更合适的事情 作为WingtipSite。
  5. 等等等
  6. 此方法根据指定的服务器引用在项目中创建代理类。但是,就我而言,服务器/站点在设计时是未知的,只有运行时才能读取用户指定的站点/列表。如何做到这一点(通过http://intranet.wingtip.com/_vti_bin/ListData.svc阅读列表,但仅在运行时)?

    注意:我正在使用与运行Sharepoint的计算机不同的计算机进行此调用。

3 个答案:

答案 0 :(得分:2)

有几个答案。

如果列表架构在您查询的所有站点中保持一致,您仍然可以使用生成的代理。创建DataContext时,只需将URI传递给用户选择的站点的ListData.svc。

如果没有,那么您可以使用具有适当格式的URI的ASP.NET WebRequest,并解析出返回的ATOM或JSON响应。

有关使用REST API的更多信息,请查看2009 SharePoint会议中的此演讲

http://msdn.microsoft.com/en-us/sharepoint/ff462048

答案 1 :(得分:0)

您可以使用Url属性在运行时在代理类中设置URL。

答案 2 :(得分:0)

SharePoint不为其Web服务提供代理类。因此,无法在运行时设置URL。我必须做的是添加2个服务引用,然后参数化我将访问哪一个。我使用配置设置来确定要访问的配置。如果站点名称更改或列出更改,那么我需要删除引用,重新添加它们,重新编译和重新部署。无法在运行时更改SharePoint网站/列表。一直在寻找3天的答案。微软不知道如何做到这一点。