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
From the stack trace it seems that there is some failure when it tries to create instance of VirtualPathProviders according to configuration in web.config. They are specified under setting <episerver.framework><virtualPathProviders> in web.config.
Do you have any provider that is from assembly EPiServer.Framework? If so change assembly to EPiServer.Framework.AspNet
Thanks Johan,
Already its updated during upgrade,
<virtualPathProviders> <clear /> <add name="ProtectedModules" virtualPath="~/EPiServer/" physicalPath="Modules\_Protected" type="EPiServer.Web.Hosting.VirtualPathNonUnifiedProvider, EPiServer.Framework.AspNet" /> <add name="CustomUrlMapping" type="EPiServer.Web.Hosting.VirtualPathMappedProvider, EPiServer" /> </virtualPathProviders>
Eventhough getting error.
This should be changed to EPiServer.Framework.AspNet instead
<add name="CustomUrlMapping" type="EPiServer.Web.Hosting.VirtualPathMappedProvider, EPiServer" />
Thanks Quan,
Its Worked. Updated code below,
<virtualPathProviders> <clear/> <add name="ProtectedModules" virtualPath="~/EPiServer/" physicalPath="Modules\_Protected" type="EPiServer.Web.Hosting.VirtualPathNonUnifiedProvider, EPiServer.Framework.AspNet"/> <add name="CustomUrlMapping" type="EPiServer.Web.Hosting.VirtualPathMappedProvider, EPiServer.Framework.AspNet"/> </virtualPathProviders>
But, Am not able to call the WebApi..
You might find the solution here https://stackoverflow.com/questions/19969228/ensure-that-httpconfiguration-ensureinitialized
Ya Quan, I tried that too in earlier, which you mentioned in above answer..
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); BundleConfig.RegisterBundles(BundleTable.Bundles); GlobalConfiguration.Configure(Infrastructure.ApiControllers.WebApiConfig.Register); RegisterGlobalFilters(GlobalFilters.Filters); GlobalConfiguration.Configuration.EnsureInitialized(); ////Tip: Want to call the EPiServer API on startup? Add an initialization module instead (Add -> New Item.. -> EPiServer -> Initialization Module) }
Eventhough getting error.
Commented that code like below,
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); BundleConfig.RegisterBundles(BundleTable.Bundles); //// GlobalConfiguration.Configure(Infrastructure.ApiControllers.WebApiConfig.Register); RegisterGlobalFilters(GlobalFilters.Filters); ////Tip: Want to call the EPiServer API on startup? Add an initialization module instead (Add -> New Item.. -> EPiServer -> Initialization Module) }
Instead of this, I Added that line in ConfigurationContainer method.
public void ConfigureContainer(ServiceConfigurationContext context) { context.StructureMap().Configure(ConfigureContainer); var dependencyResolver = new StructureMapDependencyResolver(context.StructureMap()); DependencyResolver.SetResolver(dependencyResolver); ////mvc GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver; ////web api GlobalConfiguration.Configure(config => { WebApiConfig.Register(config); config.Services.Add(typeof(IExceptionLogger), new WebApiExceptionLogger()); }); }
Its working now. Is this Correct? Little bit worried for below thing,
Because
RegisterGlobalFilters(GlobalFilters.Filters);
Its registered in app_start but web api config called after this in dependencyresolverinitilization class .
Will it affect any other case ? Is that fine ?
Hi Team,
I used below code in dependencyResolver ,
public void ConfigureContainer(ServiceConfigurationContext context)
{
context.StructureMap().Configure(ConfigureContainer);
var dependencyResolver = new StructureMapDependencyResolver(context.StructureMap());
DependencyResolver.SetResolver(dependencyResolver); ////mvc
GlobalConfiguration.Configuration.DependencyResolver = dependencyResolver; ////web api
}
But I faced null exception. Below the Error StackTrace,
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.] EPiServer.Web.Hosting.VirtualPathRegistrationHandler.CreateVirtualPathProviderInstance(ProviderSettings providerSettings) +41 EPiServer.Web.Hosting.VirtualPathRegistrationHandler.RegisterVirtualPathProvidersFromSettings(ProviderSettingsCollection settings) +99 EPiServer.Web.Hosting.VirtualPathRegistrationHandler.RegisterVirtualPathProviders(InitializationEngine context, ProviderSettingsCollection settings) +34 EPiServer.Framework.Initialization.Internal.VirtualPathProviderInitialization.RegisterVirtualPathProviders(InitializationEngine context) +126 EPiServer.Framework.Initialization.Internal.VirtualPathProviderInitialization.Initialize(InitializationEngine context) +7 EPiServer.Framework.Initialization.Internal.<>c__DisplayClass2_0.b__0() +19
EPiServer.Framework.Initialization.Internal.ModuleNode.Execute(Action a, String key) +52
EPiServer.Framework.Initialization.Internal.ModuleNode.Initialize(InitializationEngine context) +80
EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +179
[InitializationException: Initialize action failed for Initialize on class EPiServer.Framework.Initialization.Internal.VirtualPathProviderInitialization, EPiServer.Framework.AspNet, Version=11.9.2.0, Culture=neutral, PublicKeyToken=8fe83dea738b45b7]
EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +492
EPiServer.Framework.Initialization.InitializationEngine.ExecuteTransition(Boolean continueTransitions) +153
EPiServer.Framework.Initialization.InitializationEngine.Initialize() +40
EPiServer.Framework.Initialization.<>c.b__7_0(InitializationEngine e) +9
EPiServer.Framework.Initialization.InitializationModule.EngineExecute(HostType hostType, Action`1 engineAction) +462
EPiServer.Framework.Initialization.InitializationModule.FrameworkInitialization(HostType hostType) +170
EPiServer.Global..ctor() +44
SnS.EPiServerApplication..ctor() +42
ASP.global_asax..ctor() in c:\Users\User\AppData\Local\Temp\Temporary ASP.NET Files\root\945d8f11\87aa1f56\App_global.asax.0.cs:0
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +119
System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +232
System.Activator.CreateInstance(Type type, Boolean nonPublic) +83
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes, StackCrawlMark& stackMark) +1117
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +124
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture) +20
System.Web.HttpRuntime.CreateNonPublicInstance(Type type, Object[] args) +59
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +287
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +303
[HttpException (0x80004005): Exception has been thrown by the target of an invocation.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +772
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +195
Its due to the Episerver Upgrade ( from 10.2.1 - to 11.9.2 ). I removed the old version of StructureMap too. Is there any configuration missed ? Kindly help me out.
Thanks in Advance.
Regards,
krishna.