8

Visual StudioでWCFを使用してWebサービスを作成しました。生成されたWSDLを見ると、多くの型の仕様を含むhttp://schemas.microsoft.com/2003/10/Serializationへの参照が含まれています。私はこれらの仕様のいずれも使用していません。WCFがこれを追加する理由と、それを取り除く方法があるかどうかを誰かが知っていますか?

私のサービスでsingleWsdl引数を使用すると、wsdlに追加されたxmlは次のようになります。

<xs:schema xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="anyType" nillable="true" type="xs:anyType" />
  <xs:element name="anyURI" nillable="true" type="xs:anyURI" />
  <xs:element name="base64Binary" nillable="true" type="xs:base64Binary" />
  <xs:element name="boolean" nillable="true" type="xs:boolean" />
  <xs:element name="byte" nillable="true" type="xs:byte" />
  <xs:element name="dateTime" nillable="true" type="xs:dateTime" />
  <xs:element name="decimal" nillable="true" type="xs:decimal" />
  <xs:element name="double" nillable="true" type="xs:double" />
  <xs:element name="float" nillable="true" type="xs:float" />
  <xs:element name="int" nillable="true" type="xs:int" />
  <xs:element name="long" nillable="true" type="xs:long" />
  <xs:element name="QName" nillable="true" type="xs:QName" />
  <xs:element name="short" nillable="true" type="xs:short" />
  <xs:element name="string" nillable="true" type="xs:string" />
  <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte" />
  <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt" />
  <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong" />
  <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort" />
  <xs:element name="char" nillable="true" type="tns:char" />
  <xs:simpleType name="char">
    <xs:restriction base="xs:int" />
  </xs:simpleType>
  <xs:element name="duration" nillable="true" type="tns:duration" />
  <xs:simpleType name="duration">
    <xs:restriction base="xs:duration">
      <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?" />
      <xs:minInclusive value="-P10675199DT2H48M5.4775808S" />
      <xs:maxInclusive value="P10675199DT2H48M5.4775807S" />
    </xs:restriction>
  </xs:simpleType>
  <xs:element name="guid" nillable="true" type="tns:guid" />
  <xs:simpleType name="guid">
    <xs:restriction base="xs:string">
      <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:attribute name="FactoryType" type="xs:QName" />
  <xs:attribute name="Id" type="xs:ID" />
  <xs:attribute name="Ref" type="xs:IDREF" />
</xs:schema>
4

3 に答える 3

2

今では手遅れかもしれませんが、私はこの問題に遭遇し、それを解決することができました。これを削除したかったのは、JavaとRPGの両方でクライアントを生成していてwsdl2javawsdl2rpgツールがそのスキーマに基づいて大きくて醜いデータ構造を生成したためです。

私の場合、それは私がシリアライザーを使用していたためでDataContractあり、私がシリアル化していたオブジェクトのいくつかには、[DataContract]属性を持たないタイプのメンバーが含まれていました。その余分なスキーマをなくすには、すべてがシリアル化され、タイプツリーのずっと下までその属性を持つ必要がありました。

また、サービス契約に継承されたパブリックメンバーがいる場合は常にこの問題が発生しました。

于 2012-10-17T14:35:00.253 に答える
0

MicrosoftのWSDL実装のXSD定義は、この名前空間をインポートします(ここを参照)。

なぜそれを削除したいのですか?

于 2012-04-24T14:22:43.883 に答える
0

削除する必要がないことに同意します。また、何度も使用されており、あなたはそれについて知りません。デフォルトのwsdl生成を変更する方法は、IWsdlExportExtensionを実装することです。

http://msdn.microsoft.com/en-us/library/system.servicemodel.description.iwsdlexportextension.aspx

于 2012-04-24T18:05:50.713 に答える