Wcf 在运行时以编程方式访问Sharepoint列表(在设计时不创建服务引用)
我正在创建一个应用程序,最终用户可以配置该应用程序来访问用户输入的不同SharePoint网站上的SharePoint列表 我在网上遇到的阅读SharePoint列表的所有示例如下:Wcf 在运行时以编程方式访问Sharepoint列表(在设计时不创建服务引用),wcf,sharepoint,sharepoint-2010,Wcf,Sharepoint,Sharepoint 2010,我正在创建一个应用程序,最终用户可以配置该应用程序来访问用户输入的不同SharePoint网站上的SharePoint列表 我在网上遇到的阅读SharePoint列表的所有示例如下: 打开或创建Visual Studio 项目 在解决方案资源管理器中, 在“引用”节点上单击鼠标右键,然后单击 然后单击添加服务引用 在“地址”框中,键入要发送的URL 目标站点和附加 /_vti_bin/ListData.svc。例如 该站点的地址 intranet.wingtip.com将是 更改中的默认名称
注意:我是从运行Sharepoint的计算机之外的另一台计算机拨打此电话。这里有几个答案 如果要查询的所有站点的列表架构都是一致的,则仍然可以使用生成的代理。创建DataContext时,只需将URI传递给用户选择的站点的ListData.svc 如果没有,那么您可以使用具有适当格式URI的ASP.NET WebRequest并解析返回的ATOM或JSON响应 有关使用RESTAPI的更多信息,请参阅2009年SharePoint会议的演讲
您可以在运行时使用URL属性在代理类中设置URL。SharePoint不为其web服务提供代理类。因此,无法在运行时设置url。我必须做的是添加2个服务引用,然后将我要访问的服务引用参数化。我使用配置设置来确定要访问哪个。如果站点名称更改或列表更改,那么我需要删除引用,重新添加它们,重新编译并重新部署。无法在运行时更改SharePoint网站/列表。我已经找了三天的答案了。Microsoft不知道如何做到这一点。我没有代理类,这不是因为我不知道列表运行在哪台服务器上,我甚至不知道它发布时的任何列表。为什么不在本地URL上创建一个代理类,该类仅在开发期间有效,并在访问列表之前设置真正的URL。我这样做是为了一个运行时可配置的事件处理程序,它可以在服务器场之间同步列表。是的,可能需要采取一种根本不同的、非“微软推荐”的方法。Rob Windsor建议下面的rest api方法可能会奏效。