1

我想知道一种在 C# 中访问 web 服务的标准方法,其中可以以编程方式定义 web 服务引用。

我有以下情况:

  1. 可以以编程方式设置多个 Web 服务。因此我不能使用 Visual Studio 提供的“添加 Web 服务参考”(或者如果我错了,我想纠正我)。
  2. 添加的 Web 服务具有相同的结构/操作/操作/请求/响应,但可能属于提供不同数据的不同域。

例如:

  webservice 01 :  http://abc.example.com/getData
  webservice 02 :  http://xyz.example.net/getData
  1. 我是否仍然可以使用从一项服务生成的代理并将其用于另一项服务,还是必须处理原始 XML 响应?

编辑 01:我想知道以下访问 web 服务的片段是否可以概括为用于所有 web 服务

        var binding = new BasicHttpBinding();
        var address = new EndpointAddress("http://www.abc.com/service.asmx");
        var factory = new ChannelFactory<IGeneralProxy>(binding, address);

        var obj = factory.CreateChannel();
        var responseString = obj.GetData("UserName", "Password");
        Assert.IsNotNull(responseString);

IGeneralProxy客户端的接口在哪里

如果上述任何一点不清楚,请告诉我。

4

3 回答 3

1

是的,只要服务相同,您就可以为这两个服务使用相同的生成代理。我一直都这样做。

这是我的代码的片段。我使用 WSE 3.0,因为我正在处理的项目是 .net 2.0。

ServiceWse serivce = new ServiceWse();
CookieContainer cookieContainer = new CookieContainer();
serivce.Timeout = 1000 * 60 * CommonFunctions.GetConfigValue<int>(Consts.Common.WebServiceTimeout, 20);
serivce.Url = CommonFunctions.GetConfigValue(Consts.Urls.MyServiceSecuredURL, string.Empty);
serivce.CookieContainer = cookieContainer;
if (CommonFunctions.GetConfigValue(Consts.Security.UseSecuredServices, false))
    CommonFunctions.SetWSSecurity(_service.RequestSoapContext);
于 2012-06-05T15:21:39.127 回答
0

查看之前对类似问题的回答:

如何以编程方式将客户端连接到 WCF 服务?

您可以为每个 Web 服务执行此操作。

于 2012-06-05T15:17:51.353 回答
0

我们做类似的事情。Web 服务引用是针对我们服务的开发版本创建的。我们还在 web.config 中为每个 Web 服务 URI 设置了一个设置,我们在实例化服务时使用该设置;这样,当我们部署到生产环境时,我们所要做的就是更改 web.config 中的 URI,而不是重新构建项目。

var myService= new myService(){Uri = [service uri from web.config]};
于 2012-06-05T15:18:01.773 回答