.NET未反序列化XSD maxOccurs=";无界的;要素
在尝试使用声明类型数组的WSDL时,.NET无法反序列化响应消息 WSDL 自动生成的客户端代理代码 Visual studio为此服务操作响应消息创建以下定义.NET未反序列化XSD maxOccurs=";无界的;要素,.net,serialization,xsd,wsdl,.net,Serialization,Xsd,Wsdl,在尝试使用声明类型数组的WSDL时,.NET无法反序列化响应消息 WSDL 自动生成的客户端代理代码 Visual studio为此服务操作响应消息创建以下定义 [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")] [System.ComponentModel.EditorBrow
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(WrapperName="GetServiceRequestSummariesMatchingProfileResponse", WrapperNamespace="http://www.acme.com/webservices/connectors/731/servicerequest/message" +
"types", IsWrapped=true)]
public partial class GetServiceRequestSummariesMatchingProfileResponse {
[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://www.acme.com/schema/uniform/731/servicerequest/sr/srtypes", Order=0)]
[System.Xml.Serialization.XmlElementAttribute("ServiceRequestSummary")]
public ServiceRequestSummaryType[] ServiceRequestSummary;
public GetServiceRequestSummariesMatchingProfileResponse() {
}
public GetServiceRequestSummariesMatchingProfileResponse(ServiceRequestSummaryType[] ServiceRequestSummary) {
this.ServiceRequestSummary = ServiceRequestSummary;
}
}
这不起作用,序列化程序无法反序列化ServiceRequestSummaryType[]中的ServiceRequestSummaryType对象,因此无论响应是否包含这些对象,其始终为空
响应SOAP消息
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<s:Header xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"></s:Header>
<soap:Body>
<GetServiceRequestSummariesMatchingProfileResponse xmlns="http://www.acme.com/webservices/connectors/731/servicerequest/messagetypes">
<ServiceRequestSummary xmlns="http://www.acme.com/schema/uniform/731/servicerequest/sr/srtypes">
<ServiceRequestIdentification>
<ServiceRequestTechnicalKey>MD2P24BENM001</ServiceRequestTechnicalKey>
<ReferenceValue>12/00056/SR</ReferenceValue>
<AlternativeReferences>
<AlternativeReference xmlns="http://www.acme.com/schema/uniform/72b/common/uniformtypes">
<ReferenceValue>ssa</ReferenceValue>
<ReferenceType>FIRM</ReferenceType>
</AlternativeReference>
</AlternativeReferences>
</ServiceRequestIdentification>
<SiteLocation>
<Address> </Address>
<UPRN></UPRN>
</SiteLocation>
<NatureOfComplaint>Test</NatureOfComplaint>
<AdministrationDetails>
<RequestTypeCode>DFOUL</RequestTypeCode>
<RequestTypeText>Dog fouling</RequestTypeText>
<RequestKindCode>D</RequestKindCode>
<RequestKindText>Dog Request</RequestKindText>
<AllocatedToCode>EHCALL</AllocatedToCode>
<AllocatedToText></AllocatedToText>
<TimeAllocated></TimeAllocated>
<AllocationHistory>
<AllocationHistoryDetail>
<OfficerCode>EHCALL</OfficerCode>
<OfficerName>EH Call Centre</OfficerName>
<AllocationDateTime>2012</AllocationDateTime>
</AllocationHistoryDetail>
</AllocationHistory>
<HowReceivedCode>TELE</HowReceivedCode>
<HowReceivedText>telephone</HowReceivedText>
<TimeReceived>2012-11-02T13:40:00</TimeReceived>
<StatusCode>1_NEW</StatusCode>
<StatusText>1_NEW - New Request</StatusText>
</AdministrationDetails>
<SubjectDetails>
<SubjectContactDetails></SubjectContactDetails>
</SubjectDetails>
<RequestType>DOG</RequestType>
<RequestKindCode>D</RequestKindCode>
<RequestKindText>Dog Request</RequestKindText>
</ServiceRequestSummary>
</GetServiceRequestSummariesMatchingProfileResponse>
<TransactionReport xmlns="">
<TransactionComplete>True</TransactionComplete>
<TransactionSuccess>True</TransactionSuccess>
<TransactionMessages></TransactionMessages>
</TransactionReport>
</soap:Body>
</soap:Envelope>
我们有
[System.Xml.Serialization.XmlElementAttribute("ServiceRequestSummary", Namespace = "http://www.acme.com/schema/uniform/731/servicerequest/sr/srtypes")]
这样就行了。我不明白WSDL或导致反序列化失败的响应消息有什么问题,毕竟VS已经从WSDL自动生成了它的客户机代理代码,没有任何错误
更改自动生成代码不是一个可行的解决方案,如果您能找到导致此问题的原因,请使用雪茄。根据XMLSpy,此WSDL无效:
File C:\Temp\Untitled1.wsdl is not valid.
Invalid XML schema: ''s4:ServiceRequestIdentificationType' must refer to an existing simple or complex type.'
Error location: wsdl:definitions / wsdl:types / s:schema / s:complexType / s:sequence / s:element / @type
您是如何生成代理的?SVCUTIL?如果是这样,那么您需要在命令行上提供所有XML模式文件的路径。WSDL已经更新。我现在已经通过链接包含了完整的原始WSDL,因为该站点认为它太大,无法包含在线程中。代理是使用visual studio“添加引用”生成的。WSDL似乎没有任何导入,它看起来都是内联的。我无法连接到该URL。抱歉,已将链接修改为正确的google文档共享链接。
File C:\Temp\Untitled1.wsdl is not valid.
Invalid XML schema: ''s4:ServiceRequestIdentificationType' must refer to an existing simple or complex type.'
Error location: wsdl:definitions / wsdl:types / s:schema / s:complexType / s:sequence / s:element / @type