我正在开发一个服务器应用程序。它是在服务器机器上运行的Windows服务。为了与服务器服务交互,我公开了WCF服务。其他客户端可以通过使用WCF服务与服务器交互。但它限制用户只开发基于Windows的系统,我们也决定公开SOAP服务。我处于同样的发展中。 SOAP服务在IIS上运行并与WCF服务交互,但用户不了解WCF服务,而只知道SOAP。 WCF服务使用用户定义/复杂数据类型。当我在SOAP项目中使用WCF服务(与服务器交互)时,可以访问用户定义的类型(WCF正在使用)。我公开了一个方法并试图访问结果,但抛出了“NetDispatcheFaultException”。有几种用户定义的类型,但创建问题的类型如下:
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端抛出以下异常:
为什么会这样?建议一些方法来解决这个问题。如果我删除
,此异常将消失public string[] AcquiredLicenses
来自ServerConfig类的属性或只是将返回类型从“string []”更改为“List(string)”。 任何IDea?