方案:我正在连接到服务器并使用Web服务检索有关SharePoint列表的数据的客户端上运行代码。我正在使用Visual Studio 2010“服务引用”来获取SP网站的Web服务并从列表中获取数据。有用。现在如何进行编码,以便当我想从测试转到生产时,我的Web服务调用仍然可以工作?请注意,该Web服务是SharePoint Web服务,我没有编写它。我只用它。我建议的可能吗?我确实有能力确保两个环境上的站点完全相同(URLS除外)(例如,备份SP站点并将其投入生产)。感谢您的任何建议。
摘要:
基本上,我正在寻找从测试到生产的最佳方法,而无需重新编译消耗SP Web服务的代码。另外,作为一个旁注,如果任何人都知道测试/生产共享点站点必须多么相似,[为了使Web服务能够在不更改URL的情况下在两个站点上都可以工作] ..这将是有用的信息。
解决方案
项目配置文件可用于指定Web服务位置。 VS项目中的.svcdatamap和其他文件仅供设计时使用,并且实际用于连接到SharePoint Web服务的URL作为参数传递给System.Data.Services.Client.DataServiceContext
对象。这仅是切线相关的,但是要创建自己的WCF Web服务,请参阅此link。顺便说一句,只要SharePoint列表具有相同的列表名称,并且您要查询的列具有相同的名称,该Web服务将无需重新编译即可工作。
最佳答案
据我所知,Visual Studio Tools for Office项目使您可以在项目中拥有一个app.config文件。我希望Visual Studio创建app.config文件并添加与Web服务引用相关的必要配置设置。无论如何,您都需要将正确的Web服务URL存储在某个地方-app.config,注册表甚至数据库。
如果您无法将Web服务端点地址信息存储在app.config文件中,则有一种方法可以手动配置代理。
MyASMXWebService proxy = new MyASMXWebService();
proxy.Url = "web service url";
proxy.HelloWorld();
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress endpoint = new EndpointAddress("web service url");
ChannelFactory<IMyWCFWebService> factory = new ChannelFactory<IMyWCFWebService>(binding, endpoint);
IMyWCFWebService proxy = factory.CreateChannel();
proxy.DoWork();
关于visual-studio-2010 - 动态设置Web服务的URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6795592/