WCFサービスの要求と応答のオブジェクトを持つパターンに従っています。同じリターンタイプと名前を持つ複数のリクエストオブジェクトがあります。どんな助けでも大歓迎です。
次の例外が発生します。
ExceptionDetail。おそらくIncludeExceptionDetailInFaults=trueによって作成され、その値は次のとおりです。System.InvalidOperationException:WSDLエクスポート拡張機能の呼び出しで例外がスローされました:System.ServiceModel.Description.DataContractSerializerOperationBehaviorコントラクト:http ://tempuri.org/:IService ----> System.InvalidOperationException:Service.ServiceContract.IService.RetrieveUsers操作は、Service.ServiceContract.IService.RetrieveDepartments操作から既にエクスポートされているメッセージ要素[http://tempuri.org/:WeekEndingId]を参照します。メソッド名を変更するか、OperationContractAttributeのNameプロパティを使用して、いずれかの操作の名前を変更できます。または、MessageContractプログラミングモデルを使用して、要素名をより詳細に制御することもできます。
編集:プロパティのName属性を使用して一意の名前を付けましたが、これで問題は解決しますが、すべてのリクエストに「WeekEndingId」という名前を使用する必要があります。プロパティに同じ名前を使用しながら、これに対する修正を見つけたいと思います。
以下に、問題の原因となっているクラスを示します。
RetrieveDepartmentsRequest:
[MessageContract(WrapperName = "RetrieveDepartmentsRequest", WrapperNamespace = "http://Service.V1")]
public class RetrieveDepartmentsRequest
{
[MessageBodyMember(Order = 0)]
public int WeekEndingId { get; set; }
[MessageBodyMember(Order = 1)]
public string UserId { get; set; }
[MessageBodyMember(Order = 2)]
public string MachineName { get; set; }
}
RetrieveUsersRequest:
[MessageContract(WrapperName = "RetrieveUsersRequest", WrapperNamespace = "http://Service.V1")]
public class RetrieveUsersRequest
{
[MessageBodyMember(Order = 0)]
public int WeekEndingId { get; set; }
[MessageBodyMember(Order = 1)]
public string UserId { get; set; }
[MessageBodyMember(Order = 2)]
public string MachineName { get; set; }
}
IService:
[OperationContract]
[FaultContract(typeof(ServiceFault))]
RetrieveDepartmentsResponse RetrieveDepartments(RetrieveDepartmentsRequest request);
[OperationContract]
[FaultContract(typeof(ServiceFault))]
RetrieveUsersResponse RetrieveUsers(RetrieveUsersRequest request);