我正在开发一个Web服务,该服务返回在Web服务中定义的类的数组。当我对其进行测试时,我得到:“System.InvalidOperationException:不需要WebSite + HostHeader类型。使用XmlInclude或SoapInclude属性来指定静态未知的类型。”

这是代码的一部分:

[WebService(Namespace = "http://WebSiteInfo.Podiumcrm.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebSite : System.Web.Services.WebService
{
    public class WebSiteEntry
    {
        public string SiteName = "";
        public string Comment = "";
        public string IISPath = "";
        public int SiteID = 0;
        public ArrayList HostHeaders;

        public WebSiteEntry()
        {
        }
    }
    public class HostHeader
    {
        public string IPAddress = "";
        public int Port = 0;
        public string URL = "";

        public HostHeader()
        {
        }
    }


    [WebMethod(EnableSession = true)]
    [TraceExtension(Filename = @"C:\DotNetLogs\WebSiteServices.log")]
    public WebSiteEntry[] WebSites()
    {...}
}

当我尝试:

[WebService(Namespace = "http://WebSiteInfo.Podiumcrm.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[XmlInclude(typeof(WebSiteEntry))]
[XmlInclude(typeof(WebSiteProperty))]
[XmlInclude(typeof(HostHeader))]

public class WebSite : System.Web.Services.WebService
{...}

我得到:“找不到类型或名称空间名称XmlInclude(您是否缺少using指令或程序集引用?)”

指出可以给我编译和执行的咒语的人!

谢谢...

最佳答案

从您收到的错误中:

找不到类型或名称空间名称“XmlInclude”(您是否缺少using指令或程序集引用?)

看来您缺少System.Xml.Serialization Namespace。您可以完全限定XmlInclude类型,如下所示:

System.Xml.Serialization.XmlInclude(typeof(WebSiteProperty))

或通过using指令添加名称空间:
using System.Xml.Serialization

09-28 04:00