6

So recently noticed a compiler warning on a custom pipeline I wrote to override what pages "Page Not Found", "Layout Not Found" get redirected to (in order to make them site specific pages in a mutlisite solution).

'ExecuteRequest.ExecuteRequest()' is obsolete: 'Use another constructor overload with dependency injection.`

Any thoughts on how to properly implement these types of redirects now?

  • Pretty sure this one covers it all. sitecore.stackexchange.com/questions/221/… – Mark Cassidy Jul 18 '17 at 14:36
  • ExecuteRequest Handles Layout Not Found, Site Access Denied, Redirect to Login Page, plus I give the ability to configure different custom pages at a site level, so each site can customize the page it redirects to. – mtelligent Jul 18 '17 at 15:12
  • How are you using it in code? – Richard Seal Jul 18 '17 at 15:19
  • Just extending it and overriding the methods: e.g. MultiSitePageConfigurationPipeline : Sitecore.Pipelines.HttpRequest.ExecuteRequest – mtelligent Jul 18 '17 at 15:25
3

After taking this to Slack - here was the problem. In the base class, the default constructor is using poor mans DI to resolve the references:

[Obsolete("Use another constructor overload with dependency injection.")]
public ExecuteRequest()
  : this(ServiceLocator.ServiceProvider.GetRequiredService<BaseSiteManager>(), ServiceLocator.ServiceProvider.GetRequiredService<BaseItemManager>())
{
}

In the derived class, you need to have a constructor setup that injects the required dependencies and passes those through to the base class, like this:

public class MyDerivedClass : ExecuteRequest
{
    public MyDerivedClass(BaseSiteManager baseSiteManager, BaseItemManager baseItemManager)
     : this(baseSiteManager, baseItemManager)
    {
    }
}

Now the derived class is calling the new constructor in the base class and injecting the dependencies correctly.

  • This was the problem. Adding the constructor removed the compiler warning. Thanks for the help. – mtelligent Jul 18 '17 at 15:43
  • 3
    The derived processor needs resolve="true" set where this patch config takes place. – jrap Sep 25 '17 at 15:46

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.