안녕하세요, 필자는 지금까지 본 게시물에서 문제를 해결할 수 없었기 때문에 복제가 가능하지만 여기 작성한 것 같습니다.WCF에서 메시지 계약 피하기
내 WCF 서비스에서 DataContract를 사용하고 클라이언트에서 DataContract 개체로만 서비스를 사용하려고하지만 서비스 참조를 만들 때 모든 메서드에 대한 메시지 계약을 생성하는 WCF 서비스가 생성됩니다.
[ServiceContract]
public interface IUserService
{
[OperationContract]
UserVO GetUser(int Id);
}
[DataContract]
public Class UserVO
{
[DataMember]
public int Id{get;set;};
}
엔티티를 사용할 수있는 참조 된 라이브러리에서 "메시지 계약 생성 항상"및 체크 된 재사용 유형의 선택을 취소했습니다 (데이터 계약).
내 reference.cs는
System.ServiceModel.MessageContractAttribute(WrapperName="GetUser", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]
public partial class GetUserRequest {
}
편집과 같은 메시지 계약을 데 1 :
내 Reference.svcmap이
<ClientOptions>
<GenerateAsynchronousMethods>false</GenerateAsynchronousMethods>
<EnableDataBinding>true</EnableDataBinding>
<ExcludedTypes />
<ImportXmlTypes>false</ImportXmlTypes>
<GenerateInternalTypes>false</GenerateInternalTypes>
<GenerateMessageContracts>false</GenerateMessageContracts>
<NamespaceMappings />
<CollectionMappings>
<CollectionMapping TypeName="System.Collections.Generic.List`1" Category="List" />
</CollectionMappings>
<GenerateSerializableTypes>true</GenerateSerializableTypes>
<Serializer>Auto</Serializer>
<UseSerializerForFaults>true</UseSerializerForFaults>
<ReferenceAllAssemblies>true</ReferenceAllAssemblies>
<ReferencedAssemblies />
<ReferencedDataContractTypes />
<ServiceContractMappings />
편집 2와 같은 클라이언트 구성을 가지고 : 아래와 같은 것을 달성하려고합니다.
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IUserService/GetUserDetails", ReplyAction="http://tempuri.org/IUserService/GetUserDetailsResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(UserServiceFaultContract), Action="http://tempuri.org/IUserService/GetUserDetailsUserServiceFaultContractFault", Name="UserServiceFaultContract", Namespace="http://schemas.datacontract.org/2004/07/mynamespace")]
MyEntities.UserVO GetUserDetails(int id);
질문이 표시되지 않습니까? –
고객에게 메시지 계약 생성을 피하고 싶습니다. – Nagaraj
아직 질문 없습니다. 문제가 무엇입니까 ??? –