WCF测试客户端不支持WCF操作,因为它使用类型

时间:2011-08-24 07:13:08

标签: wcf

当我尝试通过WCF测试客户端导入WSDL(http://ns.hr-xml.org/schemas/org_hr-xml/3_0/Services/Web_Services/WSDL/TimeCard.wsdl)时,我得到了“

  

WCF测试客户端不支持WCF操作“

因为它使用了类型“错误消息,如屏幕截图所示。 enter image description here

合同如下所示,我不知道为什么我收到错误信息。有人可以指导我正确的方向:

[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?

2 个答案:

答案 0 :(得分:0)

我认为你的问题是WCF不理解类型HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType。 HRXMLTimeCard.HRXML_Candidate_3_1.ChangeTimeCardType类的代码在哪里?

答案 1 :(得分:0)

您是否尝试过没有任何序列化参数? (例如:删除[System.Xml.Serialization.XmlElementAttribute(Order = 0)])