客户向我们提供了他们想要开发的服务的模式和wsdl。当我跳上项目时,已经有了一个服务实现。当我在IE中提取svc文件时,它会显示正常的svcutil命令等。当我向下钻取并查看我们正在使用的wsdl导入的模式时,我注意到MessageContracts没有显示在架构。我可以做些什么来使MessageContracts显示出来,以便模式是标准的?
例如,客户给了我们这个,
<xs:schema elementFormDefault="qualified" targetNamespace="http://ws.tcore.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.tcore.com">
<xs:import schemaLocation="ATISDataContracts.xsd" namespace="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
<xs:import schemaLocation="Serialization.xsd" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xs:element name="ASICDetectorInventoryRequestMC">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="DetectorInventoryRequest" nillable="true" type="q1:DetectorInventoryRequestDC" xmlns:q1="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ConnectionRequest" nillable="true" type="q2:ConnectionRequestDC" xmlns:q2="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
但是当我从我的svc向下钻取wsdl,并且我复制/粘贴模式导入时,我注意到消息合同丢失了,尽管“q1:”等是正确的。我的架构看起来像这样。
<xs:schema elementFormDefault="qualified" targetNamespace="http://ws.tcore.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://ws.tcore.com">
<xs:import schemaLocation="http://localhost:9305/mex?xsd=xsd1" namespace="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
<xs:import schemaLocation="http://localhost:9305/mex?xsd=xsd0" namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xs:element name="DetectorInventoryRequest" nillable="true" type="q1:DetectorInventoryRequestDC" xmlns:q1="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
<xs:element name="ConnectionRequest" nillable="true" type="q2:ConnectionRequestDC" xmlns:q2="http://schemas.datacontract.org/2004/07/tcore.ATISDataContracts" />
在大多数情况下它看起来都一样。如何让我的MessageContract元素出现在架构中?
以下是邮件合同c#code
的示例namespace tcore.ATISDataContracts
{
[MessageContract(IsWrapped = false)]
public class ASICDetectorInventoryRequestMC
{
[MessageHeader]
public ConnectionRequestDC ConnectionRequest;
[MessageBodyMember]
public DetectorInventoryRequestDC DetectorInventoryRequest;
}
}
他们的模式显示了复杂类型,但我的派生模式只显示元素而不是复杂类型。我在这做错了什么?任何帮助或提示表示赞赏。
感谢您的帮助,
〜在圣地亚哥
答案 0 :(得分:1)
默认情况下,在生成WSDL文件时,模式的一部分会被拆分为其他导入文件,这些文件可能与最初可能使用的导入(例如,在客户端提供的WSDL文件中)不一致。如果您导航到导入的XSD文件(例如,http:// localhost:9305 / mex?xsd = xsd1),您应该找到一些您似乎缺少的元素。