2017-02-03 15 views
0

я перегружен методы в одном Webservice, как показано ниже:Перегрузки метод вебсервис C#

[SoapHeader("Authentication")] 
    [WebMethod(MessageName = "DeferringTransaction", Description = "Deferring Transaction")] 
    public WsResponse SendTransaction(WsDeferringTransaction wsDeferringTransaction) 
    { 
     factory.LoadSettings(); 
     WsResponse response = new WsResponse(); 
     response.ErrorCode = "Test"; 
     response.ReturnCode = 1; 
     return response; 
    } 
    [SoapHeader("Authentication")] 
    [WebMethod(MessageName = "ProcessedTransaction", Description = "Processed Transaction")] 

    public WsResponse SendTransaction(WsProcessedTransaction wsProcessedTransaction) 
    { 
     factory.LoadSettings(); 
     WsResponse response = new WsResponse(); 
     response.ErrorCode = "Test"; 
     response.ReturnCode = 1; 
     return response; 
    } 

Но когда я пытаюсь потреблять этот WebService, метод SendTransaction появляется с другим именем: SendTransaction и SendTransaction1

ServiceReference1.WsDeferringTransaction wsDeferringTransaction = new ServiceReference1.WsDeferringTransaction() 
     { 
      CaptiveId = 1, 
      TransactionDeferringId = 2 
     }; 

     ServiceReference1.WsResponse r = ws.SendTransaction(u, wsDeferringTransaction); 

     ServiceReference1.WsProcessedTransaction wsProcessedTransaction = new ServiceReference1.WsProcessedTransaction() 
     { 
      DocumentNumber = 4, 
      TransactionSequenceNumber = 450 
     }; 

     ServiceReference1.WsResponse r2 = ws.SendTransaction1(u,wsProcessedTransaction); 

Возможно ли создать перегруженные методы и использовать одноименное имя? Может ли проблема быть из-за SoapHeader? Кстати, у меня уже есть webServiceBinding с WsiProfiles.None:

[WebServiceBinding(ConformsTo = WsiProfiles.None)] 

ответ

2

Если вы используете SOAP вы не можете, Имена методов должны иметь уникальные имена в экспортированной WSDL.

В зависимости от используемой технологии существуют различные способы указания имени метода. Например, в WCF вы можете использовать атрибут [OperationContract] для указания имени.

иначе перегрузка метода легко реализуется в классе веб-сервиса. Перейдите по ссылке, чтобы посмотреть: -

https://www.codeproject.com/kb/webservices/overloadinginwebservice.aspx

 Смежные вопросы

  • Нет связанных вопросов^_^