2013-07-09 197 views
0

我正在開發服務器應用程序。它是一個在服務器機器上運行的Windows服務。爲了與服務器服務交互,我公開了WCF服務。其他客戶端可以通過使用WCF服務與服務器進行交互。但它限制了用戶只開發基於Windows的系統,我們也決定公開SOAP服務。我處於同樣的發展中。 SOAP服務在IIS上運行並與WCF服務交互,但用戶不知道WCF服務,而只知道SOAP。 WCF服務使用用戶定義的/複雜的數據類型。當我在SOAP項目中使用WCF服務(與服務器交互)時,可以訪問用戶定義的類型(WCF使用的)。我公開了一個方法並試圖訪問結果,但引發了「NetDispatcheFaultException」。有幾個用戶定義的類型,但它是創造問題的類型如下:運行SOAP服務時出現異常

public class ServerConfig 
{ 

    private List<License> _licenseConfiguration; 

    public ServerConfig() 
    { 
     _licenseConfiguration = new List<License>(); 
    } 

    [XmlArray("licenseconfiguration", IsNullable = true)] 
    [XmlArrayItem("license", typeof(License))] 
    public List<License> LicenseConfiguration { get { return _licenseConfiguration; } set { _licenseConfiguration = value; } } 


    public string[] AcquiredLicenses 
    { 
     get 
     { 
      int index = 0; 
      string[] licenses = new string[LicenseConfiguration.Count]; 
      foreach (License lic in LicenseConfiguration) 
      { 
       licenses[index] = Utils.GetUserFriendlyNameFor(lic.LicenseName); 
       index++; 
      } 
      return licenses; 
     } 
    }  
} 

public class License 
{ 
    [XmlAttribute("licensename")] 
    public LicenseTypes LicenseName { get; set; } 
    [XmlAttribute("licensecount")] 
    public int LicenseCount { get; set; } 

    public License() 
    { 
     this.LicenseName = LicenseTypes.None; 
     this.LicenseCount = 0; 
    } 
    public License(LicenseTypes licenseName) 
    { 
     this.LicenseName = licenseName; 
     this.LicenseCount = 0; 
    } 
    public FbFLicense(LicenseTypes licenseName, int count) 
    { 
     this.LicenseName = licenseName; 
     this.LicenseCount = count; 
    } 

} 

當SOAP服務運行時,我調用下面的方法,這反過來調用WCF方法:

[WebMethod] 
    public ServerConfig GetServerConfiguration() 
    { 
     return base.ServerConfiguration();//.ServerConfiguration(); 
    } 

在調用此方法一切順利執行對WCF的一面,但它拋出以下異常SOAP的一面:

enter image description here

爲什麼我t正在發生?建議一些方法來解決這個問題。如果任我從SERVERCONFIG類中刪除

public string[] AcquiredLicenses 

財產或者只是改變從「字符串[]」到「列表(字符串)」的返回類型此異常消失。 任何IDea?

回答

0

嘗試設置讀取器配額。可能數組太大而不能反序列化。 link