Hi,
I have been implemented Episerver Insight like bellow.
It very strange, I don't know why i can't get instance of ICmsTrackingService even i already registered it.
Can anybody show me clue?
System.InvalidOperationException: An error occurred when trying to create a controller of type 'AVG.Web.Controllers.Pages.StandardPageController'. Make sure that the controller has a parameterless public constructor. ---> System.MissingMethodException: No parameterless constructor defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
--- End of inner exception stack trace ---
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.<>c__DisplayClass285_0.<ExecuteStepImpl>b__0()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
System.InvalidOperationException: An error occurred when trying to create a controller of type 'AVG.Web.Controllers.Pages.StandardPageController'. Make sure that the controller has a parameterless public constructor. ---> System.MissingMethodException: No parameterless constructor defined for this object.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Activator.CreateInstance(Type type)
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
--- End of inner exception stack trace ---
at System.Web.Mvc.DefaultControllerFactory.DefaultControllerActivator.Create(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.<>c__DisplayClass285_0.<ExecuteStepImpl>b__0()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
2020-08-13 14:48:27,359 [107] ERROR AVG.Web.EPiServerApplication: No parameterless constructor defined for this object.
public interface ICmsTrackingService
{
Task TrackPage(PageData pageData, HttpContextBase httpContextBase);
}
public class CmsTrackingService : ICmsTrackingService
{
private readonly ITrackingService _trackingService;
private readonly IContextModeResolver _contextModeResolver;
private readonly ISiteDefinitionResolver _siteDefinitionResolver;
private readonly IContentLoader _contentLoader;
private readonly ILogger _logger = LogManager.GetLogger(typeof(CmsTrackingService));
public CmsTrackingService(
ITrackingService trackingService,
IContextModeResolver contextModeResolver,
ISiteDefinitionResolver siteDefinitionResolver,
IContentLoader contentLoader) {
_trackingService = trackingService;
_contextModeResolver = contextModeResolver;
_siteDefinitionResolver = siteDefinitionResolver;
_contentLoader = contentLoader;
}
public virtual async Task TrackPage(PageData pageData, HttpContextBase httpContextBase){
...
}
}
context.Services.AddTransient<ICmsTrackingService, CmsTrackingService>();
public class StandardPageController : PageControllerBase<StandardPage>
{
private readonly ICmsTrackingService _cmsTrackingService;
public StandardPageController(ICmsTrackingService cmsTrackingService)
{
_cmsTrackingService = cmsTrackingService;
}
}
}