AutoMapper(6.1.1.0)を使用してEntity FrameworkモデルとDTOモデルをマッピングし、クライアントアプリケーションに送信するシンプルなWCFサービスがあります。 AutoMapperは初めてのものです。Automapper WCFサーバー公開後のエラーマッピングタイプ
IIS Expressでローカルに実行されているWCFサービスを使用して開発マシンを開発しており、今日はWCFサービスをオンラインサーバーに公開し、すべて構成しました。私はWCFテストクライアントを使用してWCF SVCにアタッチすることができ、利用可能なメソッドから応答を得ることができます。これらのメソッドの中にはAutoMapperを使用するものと、そうでないものがあります。
私は 'main'関数を取得して応答を得ようとしたときに、DTOクラスの1つであるプロパティの1つで 'Error mapping types'エラーが発生しました。
これは、私が手にエラーが '資格証明書' がちょうど
[DataContract]
public class CredentialsDTO
{
[DataMember]
public int agency_id { get; set; }
[DataMember]
public string cf_username { get; set; }
[DataMember]
public string cf_password { get; set; }
[DataMember]
public string cf_agent_id { get; set; }
[DataMember]
public string cf_booker_id { get; set; }
}
の最大過度に困難なので、何も行われません
Error mapping types.
Mapping types:
agency_detail -> AgencyDetailDTO
ConfigWCFSA.agency_detail ->
ConfigSharedModels.AgencyDetailDTO
Type Map configuration:
agency_detail -> AgencyDetailDTO
ConfigWCFSA.agency_detail ->
ConfigSharedModels.AgencyDetailDTO
Property:
credentials
ある親クラス
[DataContract]
public class AgencyDetailDTO
{
public AgencyDetailDTO()
{
credentials = new CredentialsDTO();
son_blacklist = new List<SONBlacklistDTO>();
}
[DataMember]
public int id { get; set; }
[DataMember]
public string pcc { get; set; }
[DataMember]
public string name { get; set; }
[DataMember]
public string gds { get; set; }
[DataMember]
public string default_currency { get; set; }
[DataMember]
public bool test { get; set; }
[DataMember]
public CredentialsDTO credentials { get; set; }
[DataMember]
public List<SONBlacklistDTO> son_blacklist { get; set; }
}
で、 AutoMapperにプロパティを無視するように指示しても、他のすべてのプロパティをマッピングするのに問題はありません(もっと多くのLisがあります私はスペースを節約するために上記の 'AgencyDetailDTO'クラスをやめました)。
私はこれがすべて私の開発マシン上で完璧に動作していると言います。このマッピングの問題はWebサーバー(Win Svr 2012 IIS 8)上にあります。
私はすべての様々なクラス間のマッパーの設定を作成している(とEFモデル内のすべてのプロパティ名は私のDTOのものと一致して、私はReverseMapを(使用している)必要な場合ので、かなり確信して、私は
を修正するものをすべて持っています根本的な原因何ができるかにvar config = new MapperConfiguration(cfg =>
{
cfg.CreateMap<credentials, CredentialsDTO>().ReverseMap();
cfg.CreateMap<agency_detail, AgencyDetailDTO>().ReverseMap();
});
任意のアイデア?
乾杯 ポール
これは、WCFサービス(そのために残念)
からの完全な誤りでありますここで要求されているようError mapping types.
Mapping types:
agency_detail -> AgencyDetailDTO
ConfigWCFSA.agency_detail ->
ConfigSharedModels.AgencyDetailDTO
Type Map configuration:
agency_detail -> AgencyDetailDTO
ConfigWCFSA.agency_detail ->
ConfigSharedModels.AgencyDetailDTO
Property:
credentials
Server stack trace:
at
System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood
(Message reply, MessageFault fault, String action, MessageVersion
version, FaultConverter faultConverter)
at
System.ServiceModel.Channels.ServiceChannel.HandleReply
(ProxyOperationRuntime operation, ProxyRpc& rpc)
at
System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
at
System.ServiceModel.Channels.ServiceChannelProxy.InvokeService
(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
Exception rethrown at [0]:
at
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage
(IMessage reqMsg, IMessage retMsg)
at
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke
(MessageData& msgData, Int32 type)
at IConfigService.GetAgencyConfiguration(String pcc, String gds)
at ConfigServiceClient.GetAgencyConfiguration(String pcc, String gds)
は、EFは
public partial class agency_detail
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public agency_detail()
{
this.son_blacklist = new HashSet<son_blacklist>();
}
public int id { get; set; }
public string pcc { get; set; }
public string name { get; set; }
public string gds { get; set; }
public string default_currency { get; set; }
public bool test { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<son_blacklist> son_blacklist { get; set; }
public virtual credentials credentials { get; set; }
}
さらに詳しいエラー情報があります。より完全なエラーダンプを投稿してください。 – JuanR
私の推測では、サービスがこのフィールドを返さない可能性があります。サービス定義を再確認してください。 – JuanR
サービス参照が古くなっている可能性があります。 – JuanR