2011-04-01 102 views
1

我已经创建了一个webService。WebService调用问题

[WebMethod]  
     public void GetCommission(ArrayList Loc) 
     { 
     } 

现在我试图调用服务我得到的Xml错误。请查看快照。 enter image description here

[XmlInclude(typeof(BOLibrary.Flight.DTContract))] 
    [SoapInclude(typeof(BOLibrary.Flight.DTContract))] 
    protected void btn_click(object sender, EventArgs e) 
    { 
     ArrayList boArrayList = getList(); 
     Object[] obj = boArrayList.ToArray(); 

     CommissionService service = new CommissionService(); 
     service.GetCommission(obj); 
} 

请帮助..

这样做有什么解决方案..

enter image description here

+1

当您不提供有关实际错误的更多详细信息时,很难给出答案。试着看看异常的“InnerException”属性。 – 2011-04-01 09:33:52

+0

@Ulrik:InnerException是:{“类型BOLibrary.Flight.DTContract不是预期的,使用XmlInclude或SoapInclude属性指定静态未知的类型。”}我已经使用它,但它仍然不起作用 – Shivi 2011-04-01 09:36:22

+0

请。 。看我编辑的问题.. – Shivi 2011-04-01 09:38:29

回答

0

你把[XmlInclude]属性在错误的地方。该问题是由于您序列化从另一个对象继承的对象造成的。将XmlInclude属性放在BOLibrary.Flight.DTContract的基类上。

+0

您可以在此查看示例:http://msdn.microsoft.com/zh-cn/library/system.xml.serialization.xmlincludeattribute.aspx。 – 2011-04-01 09:43:18

0

您必须声明服务方法中的XmlInclude属性。

[WebMethod]  
[XmlInclude(typeof(BOLibrary.Flight.DTContract))] 
public void GetCommission(ArrayList Loc) 
{ 
    ... 
} 
+0

@Florian:如果我在服务方法中使用[XmlInclude(typeof(BOLibrary.Flight.DTContract))] ...现在DTContract变得模棱两可,因为它从服务和DLL获取DTContract引用。 – Shivi 2011-04-01 11:01:23

+0

对不起,我不明白你的问题。你会得到任何编译错误还是在运行时崩溃?无论哪种情况,请提供错误/异常消息。 – 2011-04-01 11:18:53

+0

@Florian:现在,来自ServiceNAmeSpace.DTContract和BOLibrary.Flight.DTContract的Dtcommission。请参阅上面的截图。 – Shivi 2011-04-01 11:34:03