c# - 有没有动态网络服务引用?

标签 c# web-services sharepoint list

我的目标是连接到共享点列表并将数据下载到数据表中。我可以很好地做到这一点,但是以一种非常“硬编码”的方式,因为我必须在 Visual Studio 内手动在项目上添加 Web 引用。例如,如果我想指出这样的内容:

http://www.ab.com/sites/SiteCollections/MyTeam/_vti_bin/dspsts.asmx

http://www.abc.com/sites/MyTeam/_vti_bin/Lists.asmx

(只是一个显示格式的虚拟 URL)。

我必须在 Visual Studio 中创建 Web 服务引用。这会生成一堆代码 (Reference.cs),并在我的项目和 app.config 中创建一个 Web 引用部分,我现在可以使用此代码:

  com.mysite.Lists lists = new Lists();
  lists.Credentials = new System.Net.NetworkCredential(user, pwd, "CORP");
  lists.Url = "http://www.abc.com/sites/MyTeam/_vti_bin/Lists.asmx";

  XmlNode ndQuery = xmlDoc.CreateNode(XmlNodeType.Element, "Query", "");
  XmlNode ndViewFields = xmlDoc.CreateNode(XmlNodeType.Element, "ViewFields", "");
  XmlNode ndQueryOptions = xmlDoc.CreateNode(XmlNodeType.Element, "QueryOptions", "");

  XmlNode listitems = lists.GetListItems(sharepointList, null, ndQuery, ndViewFields, "1000",
                                               ndQueryOptions, null);

无论如何,我可以只从外部获取一个 URL 并让此代码工作,而无需创建所有这些手动更新和配置更新。

我想将这段代码放入一个库中,这样人们就可以获取一个 URL 并将其传递进去。有趣的是,如果你查看上面的内容,它们是一个 URL 属性(所以你认为它会起作用),但事实并非如此。除非设置了所有其他配置和引用,否则似乎无法工作。无论如何,是否可以在不需要所有这些 Visual Studio 自动生成的配置驱动代码的情况下执行此操作?

最佳答案

如果您的问题是每个列表都需要一个新的服务引用,那么它已经解决了。只要所有 List.asmx 服务都具有相同的 WSDL,您就不需要为每个服务创建新的服务引用。您可以使用单个服务引用,并且只需使用采用端点地址 (Url) 的构造函数重载。

关于c# - 有没有动态网络服务引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4483640/

相关文章:

javascript - 删除空白文本节点/链接

image - Internet Explorer DOM7009 : Unable to decode image at URL: [url]

c# - 当事务类型为 Table<Transaction> 时的 LINQ to SQL 事务

c# - 如何正确地从 Web 服务返回值?

c# - BigInteger 返回 0 的模运算

asp.net - 获取“ArrayOf”前置于由ASP.NET Web服务使用Mono返回的XML表示形式的ActiveRecord对象的数组

web-services - useOriginalwsdl=true 在 axis2 中不起作用

c# - 如何在 asp.net mvc 应用程序中附加 APPS 所需的共享点参数?

c# - 如何实现关联类?

c# - 在 Xamarin Forms 中的页面之间共享单个 ViewModel 实例