1

私は必死です。既存のサービス参照をWCFサービス(共有タイプ)に更新しようとしていますが、更新できません。Googleで見つけたもの(social.msdn、stackoverflowなど)をすべて試しましたが、問題の解決策が見つかりませんでした。

ServiceContractがあり、次のコードのような新しいオペレーションを追加します。

[ServiceContract]
public partial interface IServiceDTO : IGenericServiceDTO<EntityDTO>    
{
        // Some OperationContracts working like
        [OperationContract]
        EntityDTO[] Method(int field);

        // NewMethod
        [OperationContract]
        OtherEntityDTO[] NewMethod(int field);
}

[DataContract]
public class EntityDTO {
    // Some properties working
}


[DataContract]
public class OtherEntityDTO {
    // Some properties working
    [DataMember]
    YetAnotherEntity NewProperty {get;set;}
}

サービス参照を更新しようとすると、次のエラーがスローされます。

WS-MetadataExchangeまたはDISCOを使用して「http:// localhost:65499 / Services / Acciones/ProcesoServiceDTO.svc」からメタデータをダウンロードしようとしています。エラー:wsdl:portTypeをインポートできません詳細:WSDLインポート拡張機能の実行中に例外がスローされました:System.ServiceModel.Description.DataContractSerializerMessageContractImporterエラー:参照されたタイプ'mpm.seg.ServiceModel.DTO.DataContracts.Acciones.ProcesoDTO、mpm.seg。 ServiceModel.DTO.DataContracts、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = null'、名前空間'http://schemas.datacontract.org/2004/07/mpm.seg.ServiceModelのデータコントラクト名'ProcesoDTO'。 DTO.DataContracts.Acciones'は、インポートされたDataContractと一致しないため、使用できません。このタイプを参照タイプから除外する必要があります。エラーソースへのXPath:// wsdl:definitions [@ targetNamespace = '

まず、「インポートされたDataContractと一致しないため、使用できません」という文が正確にわかりません。svcutilは、参照されたタイプをインポートされたDataContractにどのように一致させようとしていますか?クライアントプロジェクトで参照されているタイプのプロジェクトを参照しました。サーバーとクライアントが同じソリューションに含まれているためですが、それらを分離して、まったく同じdllも参照しようとしました。

また、たとえば、次のような状況で試してみると(「OtherEntityDTO toEntityDTO」の「NewProperty」と書く)、違いがわかりません。

[ServiceContract]
public partial interface IServiceDTO : IGenericServiceDTO<EntityDTO>    
{
        // Some OperationContracts working like
        [OperationContract]
        EntityDTO[] Method(int field);

        // NewMethod
        [OperationContract]
        OtherEntityDTO[] NewMethod(int field);
}

[DataContract]
public class EntityDTO {
    // Some properties working

    [DataMember]
    YetAnotherEntity NewProperty {get;set;}

}


[DataContract]
public class OtherEntityDTO {
    // Some properties working
}

どうか、私を助けて、事前に感謝します。

4

2 に答える 2

0

申し訳ありませんが、質問を投稿した後、問題が見つかり、報告されたバグでした(http://blogs.msdn.com/b/distributedservices/archive/2010/02/04/wcf-client-issue -with-reuse-types-from-referenced-assemblies.aspx?wa = wsignin1.0)。別の開発者がこの属性(IsReference = true)を親クラスに追加しましたが、私にはわかりませんでした。今、私はこのバグを回避する必要がありますが、それは別の戦いです。

とにかく、なぜ時々うまくいくのか、時々うまくいかないのかわかりません...

ありがとう。

于 2012-09-21T15:37:45.547 に答える
0

同様のエラーが発生しましたが、問題が異なるようです。

読み取り専用プロパティがあり、そのエラーが発生し続けました。通常のプロパティに変更してセットを追加すると(何もしませんでした)、コントラクトは正常に機能しました。

于 2013-04-04T14:48:15.900 に答える