簡體   English   中英

WebService C#中的重載方法

[英]Overloading method in webservice c#

我在一個Web服務中重載了以下方法:

[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;
    }

但是當我嘗試使用此Web服務時,方法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嗎? 順便說一句,我已經有了帶有WsiProfiles.None的webServiceBinding:

   [WebServiceBinding(ConformsTo = WsiProfiles.None)]

如果使用的是SOAP,則不能使用, 方法名稱在導出的WSDL中必須具有唯一的名稱

根據您使用的技術,有不同的方法來指定方法名稱。 例如,在WCF中,您可以使用[OperationContract]屬性來指定名稱。

否則,方法重載很容易在Web服務類中實現。 請點擊鏈接查看:-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM