「自分のマシン上で」完全に実行されているアプリケーションがありますが、本番環境にデプロイするとサイトは機能しますが、エンティティ フレームワークのコードの 1 つに問題があります。
私の環境は、vs2013rc を実行している win8.1 マシンです。本番環境は、2008r2 を実行しているサーバーです。どちらも sql2012 を実行しています。
トラブルシューティングを試みるために、データベースを本番環境からローカルの開発環境にコピーしました。ローカル マシンで IIS をセットアップしようとしましたが、うまくいきました
EXメッセージ
要求されたタイプの 1 つ以上を読み込めません。詳細については、LoaderExceptions プロパティを取得してください。
>STACK TRACE
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at System.Data.Metadata.Edm.ObjectItemConventionAssemblyLoader.LoadTypesFromAssembly()
at System.Data.Metadata.Edm.ObjectItemAssemblyLoader.Load()
at System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, ObjectItemLoadingSessionData loadingData)
at System.Data.Metadata.Edm.AssemblyCache.LoadAssembly(Assembly assembly, Boolean loadReferencedAssemblies, KnownAssembliesSet knownAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage, Object& loaderCookie, Dictionary`2& typesInLoading, List`1& errors)
at System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache(ObjectItemCollection objectItemCollection, Assembly assembly, Boolean loadReferencedAssemblies, EdmItemCollection edmItemCollection, Action`1 logLoadMessage)
at System.Data.Metadata.Edm.ObjectItemCollection.ExplicitLoadFromAssembly(Assembly assembly, EdmItemCollection edmItemCollection, Action`1 logLoadMessage)
at System.Data.Metadata.Edm.MetadataWorkspace.ExplicitLoadFromAssembly(Assembly assembly, ObjectItemCollection collection, Action`1 logLoadMessage)
at System.Data.Entity.Internal.InternalContext.TryUpdateEntitySetMappingsForType(Type entityType)
at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)
at System.Data.Entity.Internal.Linq.InternalSet`1.Initialize()
at System.Data.Entity.Internal.Linq.InternalSet`1.get_InternalContext()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Linq.IQueryable.get_Provider()
at System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source, Expression`1 predicate)
at WebApplication.Areas.Config.Repository.ConfigRepository.InsertUpdateConfiguration(ConfigurationModel model)
私のコードは特別なものではありません
public void InsertUpdateConfiguration(ConfigurationModel model)
{
try
{
using (var db = new Entities())
{
LogMessage("InsertUpdate - "+model.StoreName);
if (model == null)
{
LogMessage("model is null????????");
}
else
{
LogMessage("model is good - "+model.BusinessId);
}
var checkIfAdded = db.Configurations.SingleOrDefault(s => s.BusinessId == model.BusinessId);
LogMessage("checkif added complete");
// LogMessage("checkedifadded"+checkIfAdded.BusinessId);
if (checkIfAdded == null)
{
LogMessage("checkifadded = null");
var config = new Configuration()
{
....
};
db.VendConfigurations.Add(config);
}
else
{
LogMessage("checkifadded != null");
}
LogMessage("saving vend config");
db.SaveChanges();
LogMessage("Saved config");
}
}
catch (Exception ex)
{
LogMessage("booooooo "+ex.Message);
LogError(ex);
}
}
コードは次の行で失敗しています
var checkIfAdded = db.Configurations.SingleOrDefault(s => s.BusinessId == model.BusinessId);
ロギングの次の行が呼び出されないため。