2017-06-21 23 views
0

WCF経由でネットワーククライアントにデータを提供し、データベースといくつかの特定のタスクへの接続を処理するバックエンドサービス(Windowsサービス)を作成しました。WCFサービス参照を更新していません

いつもDTO-Objectsで何かが変更されたとき、私はサービス参照を更新するときにクライアント側で正しく変更が加えられました。

ただし、Update-Processでは、WCFサービスの正しいプロキシが作成されません。 いくつかのDTOオブジェクトを追加すると、新しいDTOがクライアントに正しく更新されますが、既存のDTOオブジェクトにいくつかのPropertiesを追加すると、Update-Servicereference関数には新しいPropertiesが含まれません。 私はすでに完全に新しいアプリケーションを作成し、このテストシナリオ内でサービスリファレンスを追加しようとしましたが、この場合も新しいプロパティはプロキシクラスには表示されません。

初めてこの現象が私の "File.cs" DTOに新しいプロパティを作成しようとしていたことがわかりました。私はこのエラーを作成する名前 "ファイル"(クラス定義が同じ名前を持っている)と思った。だから、私は "ファイル" DTOクラスの名前をAttachmentFileに変更することに決めました。新しいプロパティはプロキシ上に正しく作成されます。

しかし、今度は、クラスのDeviceStayTypeとProcessStateTypeにPropertiesを追加しようとしましたが、同じ動作です。エラーは表示されず、Gitは私がUpdate Service-Referencesを押したときにプロキシが変わったと言っていますが、依然としてクライアント側にはプロパティがありません。

古いDeviceStayTypeクラス:

[DataContract] 
public class DeviceStayType : TypesBase 
{ 
} 

新しいDeviceStayTypeクラス:

[DataContract] 
public class DeviceStayType : TypesBase 
{ 
    [DataMember(Name = "TableName")] 
    [MaxLength(200)] 
    public string TableName { get; set; } 
} 

DeviceStayType

用に生成されたプロキシ
[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")] 
[System.Runtime.Serialization.DataContractAttribute(Name="DeviceStayType", Namespace="http://schemas.datacontract.org/2004/07/ProductLifecycle.Backend.Models.DTO")] 
[System.SerializableAttribute()] 
public partial class DeviceStayType : ProductLifecycle.Frontend.CommunicationService.TypesBase { 
} 
ここ

は、いくつかのスニペットです

誰も助けてくれることを願っています。( ありがとう、 マイケル

+0

サービス参照をもう一度削除して再作成 – Rahul

+0

これは私がこの問題を解決するための最初の試みの1つでした。どのように私は悲しい:私はすべての新しいアプリケーションを作成し、同じサービスに参照を追加する場合propertysも欠けている。新しいDTOクラスを作成したときだけ、MEXは新しいオブジェクトをクライアントに配信します – Michael

答えて

0

OK。いくつかのテストの後、私は両方のプロジェクト(バックエンドとフロントエンド)が参照を持つDLLにモデルをアウトソースすることに決めました。 これがこの問題を解決する唯一の方法だと思われます。私は、この動作が、thereeが2つのWebサービスである場合に生成されると考えています。 1つはコールバック(フロントエンドではパフォーマンスが優れているためにストリーミングされています)と、バックエンドでは管理サービスとして1つです。どちらのサービスも同じクラスを使用していました。バックエンドサービスがモデルをFrontend-Clientに送信し、Frontend-Serviceがモデルをバックエンドクライアントに送信するため、これが考えられる可能性があると考えました。 アウトソーシングされたクラスとはるかに軽いコンバージョンで、私の場合はシナリオが機能します。

関連する問題