Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重命名Service1SoapClient_C#_Asp.net_Web Services - Fatal编程技术网

C# 重命名Service1SoapClient

C# 重命名Service1SoapClient,c#,asp.net,web-services,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");

你好

我在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();
WebService.TestServiceClient webProccessor = null;
EndpointAddress endPoint = new EndpointAddress("http://localhost/TestService/TestService.svc");
webProccessor  = new WebService.TestServiceClient(new BasicHttpBinding(), endPoint);
webProccessor.HelloWorld();
如何将“Service1SoapClient”更改为“TestServiceClient”?我假设这可以在Web服务中实现,但我不知道如何实现

换句话说,我希望客户端中的代码如下所示:

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

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

[WebService(Name = "TestService",Namespace = "yourNamespace")]
我是如何解决的:

  • 创建WCF服务(将托管在IIS中),而不是普通的Web服务
  • 创建包含HelloWorld()声明的接口
  • 创建名为“TestServiceClient”的类,该类继承ClientBase和接口:

    公共类TestServiceClient:System.ServiceModel.ClientBase
    ,ITestInterface

  • 在该类中创建方法:

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

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

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

    从项目引用中删除web服务,使用新名称重新发布IIS上的服务,重新添加引用这只会更改服务名称--我最终得到:
    webProccessor=new WebService.TestServiceSoapClient(new BasicHttpBinding(),endPoint)