2 か月前に、この問題について質問しました。問題はまだ存在します。
エラーは特定の Entity-DTO マッピングではなく、コントローラーの最初の Entity-DTO で発生することがわかったため、ここで同じ問題をコピー/貼り付けするつもりはありません。
つまり、プログラム フローが Country-CountryDto にヒットした場合、エラーは次のように表示されます。
Missing type map configuration or unsupported mapping.
Mapping types:
Country -> CountryDTO
MyApp.Domain.BoundedContext.Country -> MyApp.Application.BoundedContext.CountryDTO
Destination path:
List`1[0]
Source value:
MyApp.Domain.BoundedContext.Country
または、最初の手でアカウントのチェックがある場合、エラーは次のように表示されます。
Missing type map configuration or unsupported mapping.
Mapping types:
Account -> AccountDTO
MyApp.Domain.BoundedContext.Account -> MyApp.Application.BoundedContext.AccountDTO
Destination path:
AccountDTO
Source value:
MyApp.Domain.BoundedContext.Account
また、N レイヤー ソリューションのプレゼンテーション レイヤー (この場合は MVC 3 プロジェクト) を再構築するたびにエラーが発生しないこともわかりました。そして、ランダムな時間に、それは再び起こります。
この問題が開発環境でのみ発生した場合は大したことではありませんが、公開後も問題が発生していたため、非常に困っています。
Google、Stackoverflow、Automapper Forums/Groups を検索しましたが、成功しませんでした。
Mapper.AssertConfigurationIsValid() を使用してマッピングもテストしましたが、すべて問題ありませんでした。
私のプロジェクトは、Automapper 2.2 と Unity IoC を使用した MVC 3 プロジェクトです。
繰り返しになりますが、アイデア、アドバイス、または解決策をいただければ幸いです。
編集: OK、今、私は手がかりを持っています..私は、すべてのマッピングが行われる ManagementProfile というプロファイルを持っています。には、AutomapperTypeAdapterFactory()
次のようなコードがあります。
public AutomapperTypeAdapterFactory()
{
//Scan all assemblies to find an Auto Mapper Profile
var profiles = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(a => a.GetTypes())
.Where(t => t.BaseType == typeof(Profile));
Mapper.Initialize(cfg =>
{
foreach (var item in profiles)
{
if (item.FullName != "AutoMapper.SelfProfiler`2")
cfg.AddProfile(Activator.CreateInstance(item) as Profile);
}
});
}
通常、profiles
変数は ManagementProfile を保持していることがわかりましたが、情報を取得できず"Enumeration yielded no results"
、この質問に記載されている例外が発生する場合があります。
さらに調査すると、すべてが正常な場合AppDomain.CurrentDomain.GetAssemblies()
は 85 個のアセンブリが読み込まれ、一方、例外が発生した場合は 41 個のアセンブリのみが読み込まれ、欠落しているアセンブリの 1 つが DTO マッピングを保持するものであることが明らかになりました。