动态设置Web服务的URL

Kyl*_*leM 6 visual-studio-2010 sharepoint-2010

场景:我在连接到服务器的客户端上运行代码,并使用Web服务检索有关SharePoint列表的数据.我正在使用Visual Studio 2010"服务引用"来获取我的SP站点的Web服务并从列表中获取我的数据.有用.现在我该如何编写代码,以便当我想从Test转到Production时,我的Web服务调用仍然有效?请注意,Web服务是SharePoint Web服务,我没有写它.我只是用它.我建议可能吗?我确实能够确保两个环境中的站点完全相同(URLS除外)(例如备份SP站点并将其投入生产).谢谢你的任何建议.

摘要:

基本上我正在寻找从测试到生产的最佳方式,而无需重新编译消耗SP Web服务的代码.此外,作为附注,如果有人知道测试/生产sharepoint站点必须有多相似,[为了使Web服务能够在没有任何东西的情况下工作,除了URL被更改] ..这将是有用的信息.

项目配置文件可用于指定Web服务位置.VS项目中的.svcdatamap和其他文件仅供设计时使用,实际用于连接SharePoint Web服务的URL作为参数传递给System.Data.Services.Client.DataServiceContext对象.这只是切线相关,但要创建自己的WCF Web服务,请参阅此链接.顺便说一句,Web服务无需重新编译即可在SharePoint列表具有相同列表名称的任何位置工作,并且您要查询的列具有相同的名称.

Vas*_*kov 15

据我所知,Visual Studio Tools for Office项目允许您在项目中拥有app.config文件.我希望Visual Studio创建app.config文件并添加与Web服务引用相关的必要配置设置.在任何情况下,您都需要在某个地方存储正确的Web服务URL - app.config,注册表甚至数据库.

如果您无法在app.config文件中存储Web服务端点地址信息,则可以手动配置代理.

  1. 如果它是在Visual Studio中添加为遗留"Web引用"的.asmx引用,那么您需要做的就是在调用任何Web服务方法之前设置代理对象的Url属性值.例如:

    MyASMXWebService proxy = new MyASMXWebService();
    proxy.Url = "web service url";
    proxy.HelloWorld();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果它是.svc WCF服务引用,那么事情会变得复杂一些.您需要以编程方式创建Web服务端点.例如:

    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();
    
    Run Code Online (Sandbox Code Playgroud)