当我尝试通过WCF测试客户端导入WSDL(http://ns.hr-xml.org/schemas/org_hr-xml/3_0/Services/Web_Services/WSDL/TimeCard.wsdl)时,我得到了“
WCF测试客户端不支持WCF操作“
因为它使用了类型“错误消息,如屏幕截图所示。
合同如下所示,我不知道为什么我收到错误信息。有人可以指导我正确的方向:
[System.ServiceModel.OperationContractAttribute(Action="ChangeTimeCard", ReplyAction="*")]
[System.ServiceModel.FaultContractAttribute(typeof(HRXMLTimeCard.HRXML_Candidate_3_1.ConfirmBODType), Action="ChangeTimeCard", Name="ConfirmBOD", Namespace="http://www.openapplications.org/oagis/9")]
[System.ServiceModel.XmlSerializerFormatAttribute(SupportFaults=true)]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BinaryObjectType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AmountType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(QuantityType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PreferenceABIEType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(AddressBaseType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(NameType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(PersonNameBaseType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(TimePeriodABIEType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(TextType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(CodeType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(StatusBasisType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(VerbType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(ResponseCodeType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(IdentifierType))]
[System.ServiceModel.ServiceKnownTypeAttribute(typeof(BusinessObjectDocumentType))]
HRXMLTimeCard.HRXML_Candidate_3_1.ProcessTimeCardResponse ChangeTimeCard(HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardRequest request);
这是ChangeTimeCardRequest类:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(IsWrapped=false)]
public partial class ChangeTimeCardRequest {
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.hr-xml.org/3", Order=0)]
public HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType ChangeTimeCard;
public ChangeTimeCardRequest() {
}
public ChangeTimeCardRequest(HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType ChangeTimeCard) {
this.ChangeTimeCard = ChangeTimeCard;
}
}
以下是ChangeTimeCardType:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://www.hr-xml.org/3")]
public partial class ChangeTimeCardType : BusinessObjectDocumentType {
private ChangeTimeCardDataAreaType dataAreaField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Order=0)]
public ChangeTimeCardDataAreaType DataArea {
get {
return this.dataAreaField;
}
set {
this.dataAreaField = value;
this.RaisePropertyChanged("DataArea");
}
}
}
此外,如果wsdl在WCF测试客户端中不起作用,这是否意味着它不适用于所有客户端,即。 Java还是php?
答案 0 :(得分:0)
我认为你的问题是WCF不理解类型HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType。 HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType类的代码在哪里?
答案 1 :(得分:0)
您是否尝试过没有任何序列化参数? (例如:删除[System.Xml.Serialization.XmlElementAttribute(Order = 0)])