Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
Five New Optimizely Certifications are Here! Validate your expertise and advance your career with our latest certification exams. Click here to find out more
To add more information.
I am following this link http://sdk.episerver.com/commerce/1.1/Content/Developers%20Guide/Catalog%20System/Catalog%20How%20To%20Code%20Samples/Creating%20Catalog%20Entries.htm
If somebody can provide a working version of this code in a pilot project, that would be great.
Thanks,
Syed
Had the same exception initialy as you have:
System.TypeInitializationException: The type initializer for 'Mediachase.Commerce.Catalog.CatalogContext' threw an exception. ---> EPiServer.ServiceLocation.ActivationException: Activation error occurred while trying to get instance of type IWarehouseRepository, key "" ---> StructureMap.StructureMapException: StructureMap Exception Code: 202
No Default Instance defined for PluginFamily EPiServer.Framework.Cache.ISynchronizedObjectInstanceCache, EPiServer.Framework, Version=7.6.3.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7
at StructureMap.BuildSession.<.ctor>b__0(Type t)
at StructureMap.Util.Cache`2.get_Item(KEY key)
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.ConstructorInstance.Get[T](String propertyName, BuildSession session)
at lambda_method(Closure , IArguments )
at StructureMap.Construction.BuilderCompiler.FuncCompiler`1.<>c__DisplayClass2.<CreateBuilder>b__0(IArguments args)
at StructureMap.Construction.InstanceBuilder.BuildInstance(IArguments args)
at StructureMap.Pipeline.ConstructorInstance.Build(Type pluginType, BuildSession session, IInstanceBuilder builder)
at StructureMap.Pipeline.SmartInstance`1.build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.createRawObject(Type pluginType, BuildSession session)
at StructureMap.Pipeline.Instance.Build(Type pluginType, BuildSession session)
at StructureMap.Pipeline.ObjectBuilder.Resolve(Type pluginType, Instance instance, BuildSession session)
at StructureMap.BuildSession.CreateInstance(Type pluginType, Instance instance)
at StructureMap.BuildSession.CreateInstance(Type pluginType)
at EPiServer.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
--- End of inner exception stack trace ---
at EPiServer.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
at EPiServer.ServiceLocation.ServiceLocatorImplBase.GetInstance[TService]()
at Mediachase.Commerce.Catalog.Impl.CatalogContextImpl..ctor(MetaDataContext context)
at Mediachase.Commerce.Catalog.CatalogContext..cctor()
--- End of inner exception stack trace ---
at Mediachase.Commerce.Catalog.CatalogContext.get_Current()
So to successfully initialize CatalogContext and Dynamic Data Store I have this initialization code:
...
if (DynamicDataStoreFactory.Instance != null)
{
return;
}
var context = new ServiceConfigurationContext(HostType.Installer, new Container());
new CommerceInitialization().ConfigureContainer(context);
new EventsInitialization().ConfigureContainer(context);
var factory = new SqlDatabaseFactory();
context.Container.Configure(ce => ce.For<IDatabaseHandler>().Use(factory.CreateDefaultHandler));
context.Container.Configure(ce => ce.For<IPriceService>().Use<PriceServiceDatabase>());
context.Container.Configure(ce => ce.For<IObjectInstanceCache>().Use<HttpRuntimeCache>());
context.Container.Configure(ce => ce.For<ISynchronizedObjectInstanceCache>().Use<RemoteCacheSynchronization>());
var locator = new StructureMapServiceLocator(context.Container);
ServiceLocator.SetLocator(locator);
DataInitialization.InitializeFromCode(context.Container, factory, null);
DynamicDataStoreFactory.Instance = new EPiServerDynamicDataStoreFactory();
...
I am trying to use your code, but having trouble resolving the following objects / types. Am I missing a reference?
DynamicDataStoreFactory
SqlDatabaseFactory
IDatabaseHandler
RemoteCacheSynchronization
DataInitialization
Finally I got it working, but I had to add a Fake interface implemenation (below) to make it work for me. (Thanks to another community memeber Murtaza's post)
ce.For<ITypeScannerLookup>().HybridHttpOrThreadLocalScoped().Use<FakeTypeScannerLookup>();
public class FakeTypeScannerLookup : ITypeScannerLookup
{
private static object _lock = new object();
private HashSet<Type> _types = new HashSet<Type>();
/// <summary>
/// Gets the scanned types.
///
/// </summary>
public IEnumerable<Type> AllTypes
{
get
{
return (IEnumerable<Type>)this._types;
}
}
static FakeTypeScannerLookup()
{
}
/// <summary>
/// Adds the specified scanned type.
///
/// </summary>
/// <param name="t">The t.</param>
public void Add(Type t)
{
lock (_lock)
this._types.Add(t);
}
/// <summary>
/// Deletes the specified scanned type.
///
/// </summary>
/// <param name="t">The t.</param>
public void Delete(Type t)
{
this._types.Remove(t);
}
}
DynamicDataStoreFactory -> EPiServer.Data.Dynamic.DynamicDataStoreFactory
SqlDatabaseFactory -> EPiServer.Data.Providers.SqlDatabaseFactory
IDatabaseHandler -> EPiServer.Data.IDatabaseHandler
RemoteCacheSynchronization -> EPiServer.Events.RemoteCacheSynchronization
DataInitialization -> EPiServer.Data.DataInitialization
maybe this will help someone
I am writing a custom catalog importer for EPI Server that would import catalog data into EPI Server from a non-EPIserver System. I am planning to use the API. I am new to EPI Server. I am trying to execute the statement below in my pilot program but I get the initilization erros.
int catalogId = 2;
// Get a CatalogDto object.
CatalogDto catalogDto = CatalogContext.Current.GetCatalogDto(catalogId, new CatalogResponseGroup(CatalogResponseGroup.ResponseGroup.CatalogInfo));
Error: The type initializer for 'Mediachase.Commerce.Catalog.CatalogContext' threw an exception.
I am looking for help to identify the pre-requisits for the above statement to run. I sort of have an idea of having the configuration files in place but that did not help as well.
Thanks in advance for your hlep.
Syed