【发布时间】:2015-01-21 15:34:30
【问题描述】:
您好,它可能是重复的,但写在这里,因为我无法解决我目前看到的帖子中的问题。
我的 WCF 服务和客户端中有 DataContracts 我只想将我的服务作为 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);
【问题讨论】:
-
我没有看到问题?
-
我想避免在我的客户端创建消息合约
-
仍然没有问题。什么问题???
-
我想在我的客户端上使用 DataContracts 而不是消息合约,但它总是在创建消息合约。