我有WSDL從WCF服務導出應用singleWSDL參數。WCF WSDL擺脫qXX命名空間
有很多qXX XML名稱空間在下面的片段中用於類型和方法。
<xs:complexType name="PrincipalReference">
<xs:complexContent mixed="false">
<xs:extension base="q2:EntityReferenceBase">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="GetPermissions">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="principal" nillable="true" type="q1:PrincipalReference"/>
</xs:sequence>
</xs:complexType>
</xs:element>
PrincipalReference類繼承自EntityReferenceBase。 PrincipalReference和EntityReferenceBase都在相同的C#名稱空間中,並且具有與DataContractAttribute的名稱空間字段相同的值。所以他們通過一切手段在一個名字空間。
我能以某種方式擺脫這些q1和q2 XML命名空間嗎? Web服務旨在用於各種環境(平臺/語言),因此更清晰的WSDL讓我更快樂。
例如,我可以像解決方法一樣,停止使用繼承,將基類內容複製到派生類,從而解決q2問題,但我不知道如何處理應用於方法參數類型的q1名稱空間。
我已經這樣做了。名稱空間字段在每個屬性上設置。所有名稱空間值都是相同的。 – adontz
對不起@adontz我沒有正確地讀你的帖子,所以回答了錯誤的問題。我沒有看到擺脫qs:extension上的q2:EntityReferenceBase的顯而易見的方式。正如你所說的,你可以重構PrincipalReference,使它不會從基類繼承。另一件事你可以嘗試(我不知道這是否會起作用)將使EntityReferenceBase成爲一個抽象類 - 這可能會影響生成的xsd。 –