singleWSDL 매개 변수가 적용된 WCF 서비스에서 WSDL을 내 보냈습니다.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 네임 스페이스를 제거 할 수 있습니까? 웹 서비스는 다양한 환경 (플랫폼/언어)에서 사용되도록 고안되었으므로 명확한 WSDL이 더 행복합니다.
상속 사용을 중단하고 기본 클래스 내용을 파생 클래스에 복사하여 q2 문제를 해결할 수 있지만 메서드 매개 변수 유형에 적용되는 q1 네임 스페이스를 어떻게 처리해야할지 모릅니다.
나는 이미 이것을했다. 네임 스페이스 필드는 모든 속성에 설정됩니다. 모든 네임 스페이스 값은 동일합니다. – adontz
죄송합니다 @ adontz 귀하의 게시물을 제대로 읽지 않아서 잘못된 질문에 답변했습니다. x2 : EntityReferenceBase를 x2 : Extension에서 q2를 없애는 확실한 방법은 없습니다. 앞서 말했듯이 기본 클래스에서 상속받지 않도록 PrincipalReference를 리팩터링 할 수 있습니다. 당신이 시도해 볼 수있는 다른 것 (이것이 작동하는지 모르겠다)은 EntityReferenceBase를 추상 클래스로 만드는 것이다. 이것은 * 생성 된 xsd에 영향을 미칠지 모른다. –