重命名Service1SoapClient

时间:2015-08-27 11:15:04

标签: c# asp.net web-services

美好的一天

我在C#中创建了一个ASP.NET Web服务应用程序,将其发布,并在IIS上托管它。然后我创建了一个客户端程序,它将调用Web服务的HelloWorld()方法。

客户端中的代码如下所示:

WebService.Service1SoapClient webProccessor = null;
EndpointAddress endPoint = new EndpointAddress("http://localhost/TestService/TestService.svc");
webProccessor  = new WebService.Service1SoapClient(new BasicHttpBinding(), endPoint);
webProccessor.HelloWorld();

如何将“Service1SoapClient”更改为“TestServiceClient”?我假设这可以在Web服务中完成,但我不知道如何。

换句话说,我希望客户端中的代码看起来如下:

WebService.TestServiceClient webProccessor = null;
EndpointAddress endPoint = new EndpointAddress("http://localhost/TestService/TestService.svc");
webProccessor  = new WebService.TestServiceClient(new BasicHttpBinding(), endPoint);
webProccessor.HelloWorld();

2 个答案:

答案 0 :(得分:0)

要将默认名称更改为其他名称,您必须从服务中更改名称:

[WebService(Name = "TestService",Namespace = "yourNamespace")]

答案 1 :(得分:0)

我是如何解决的:

  1. 创建WCF服务(将在IIS中托管)而不是普通的Web服务
  2. 创建包含HelloWorld()声明的接口
  3. 创建一个名为'TestServiceClient'的类,它继承ClientBase和接口:

    公共类TestServiceClient:System.ServiceModel.ClientBase <ITestInterface&gt;,ITestInterface

  4. 在该类中创建方法:

    public TestServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : 
            base(binding, remoteAddress)
    {
    }
    

    public string HelloWorld()
    {
        return base.Channel.HelloWorld();
    }
    

    然后我可以像问题中描述的那样调用服务:

    webProccessor  = new WebService.TestServiceClient(new BasicHttpBinding(), endPoint);