2017-03-08 69 views
0

我試着去創建一個包含其中只有一個返回一條記錄的項目功能的簡單的Web服務,該問題是部署ASMX文件此錯誤後會出現:System.Tuple不能序列化,因爲它沒有參數的構造函數

enter image description here

導致此問題的功能是:

[WebMethod] 
     public Tuple<String[],String> BeginTest(String url, String ip_public, int port_external, String ip_internal, int port_inner, bool isInner) 
     { 
      Ping ping = new Ping(); 
      String errorMSG = "Null"; 
      String[] info = new string[3]; 
      PingReply pingreply = null; 

      try 
      { 
       if (isInner) 
       { 
        pingreply = ping.Send(ip_internal); 
       } 
       else 
       { 
        pingreply = ping.Send(ip_public); 
       } 

       info[0] = pingreply.RoundtripTime.ToString() ; 
       info[1] = pingreply.Options.Ttl.ToString(); 
       info[2] = pingreply.Buffer.Length.ToString(); 


      } 
      catch (Exception err) 
      { 
       errorMSG = err.Message.ToString(); 
      } 

      return new Tuple<string[], string>(info, errorMSG); 



     } 
+0

爲什麼使用元組則 –

+0

@LeiYang我需要的,如果可以檢索2個不同的字符串,如果有更好的方法我沒有問題更改代碼。 – Omar

+0

知道WCF中的DataContract? –

回答

1

創建自己的元組類,名爲MyTuple,這確實有一個參數的構造函數。

public class MyTuple<TypeParameter1, TypeParameter2> 
{ 
    public TypeParameter1 Value1 { get; set; } 
    public TypeParameter2 Value2 { get; set; } 

    public MyTuple() 
    { 

    } 
    public MyTuple(TypeParameter1 value1, TypeParameter2 value2) 
    { 
     Value2 = value2; 
     Value1 = value1; 
    } 
} 

此處瞭解詳情: https://www.codeproject.com/Articles/1052516/Csharp-Generics-for-beginners-Part

相關問題