Unable to boot Squidex locally for dev

Hi! I’m trying to get squidex to run locally for development purposes and I can’t seem to get it to run. I’ve followed the steps from the documentation. It looks as if no service is bound to System.Net.Http.IHttpClientFactory in the DI container.

Below you’ll find the stacktrace and my system information. Hope someone can help!

System info
MacOS 10.13.6
.NET core 2.1.401
Node v10.9.0
Npm 6.2.0
Squidex v1.10.0-14-g687c22bc (current master as of this post)

Unhandled Exception: System.AggregateException: One or more errors occurred. (Lifecycle start canceled due to errors at stage 20000) ---> Orleans.Runtime.OrleansLifecycleCanceledException: Lifecycle start canceled due to errors at stage 20000 ---> Orleans.Runtime.OrleansException: Error creating activation for Squidex.Domain.Apps.Entities.Rules.RuleDequeuerGrain. Message NewPlacement Request S192.168.1.69:11111:273683761*stg/20/00000014@S00000014->S192.168.1.69:11111:273683761*grn/FDC46FA9/00000000+Default@293e9282 #24:  ---> System.InvalidOperationException: Unable to resolve service for type 'System.Net.Http.IHttpClientFactory' while attempting to activate 'Squidex.Domain.Apps.Rules.Actions.Discourse.DiscourseActionHandler'.
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(Type serviceType, Type implementationType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateEnumerable(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(Type serviceType, Type implementationType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateCallSite(Type serviceType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.CreateServiceAccessor(Type serviceType)
   at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
   at Microsoft.Extensions.DependencyInjection.ActivatorUtilities.GetService(IServiceProvider sp, Type type, Type requiredBy, Boolean isDefaultParameterRequired)
   at lambda_method(Closure , IServiceProvider , Object[] )
   at Orleans.Runtime.GrainCreator.CreateGrainInstance(IGrainActivationContext context)
   at Orleans.Runtime.Catalog.CreateGrainInstance(String grainTypeName, ActivationData data, String genericArguments)
   at Orleans.Runtime.Catalog.SetupActivationInstance(ActivationData result, String grainType, String genericArguments)
   at Orleans.Runtime.Catalog.GetOrCreateActivation(ActivationAddress address, Boolean newPlacement, String grainType, String genericArguments, Dictionary`2 requestContextData, Task& activatedPromise)
   at Orleans.Runtime.Dispatcher.ReceiveMessage(Message message)
   --- End of inner exception stack trace ---
   at Orleans.Runtime.Dispatcher.ReceiveMessage(Message message)
--- End of stack trace from previous location where exception was thrown ---
   at Squidex.Infrastructure.Orleans.Bootstrap`1.Execute(CancellationToken cancellationToken) in /Users/christopher/Projects/scratch/squidex/src/Squidex.Infrastructure/Orleans/Bootstrap.cs:line 35
   at Orleans.Runtime.SiloLifecycleSubject.MonitoredObserver.OnStart(CancellationToken ct)
   at Orleans.LifecycleSubject.WrapExecution(CancellationToken ct, Func`2 action)
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct)
   --- End of inner exception stack trace ---
   at Orleans.LifecycleSubject.OnStart(CancellationToken ct)
   at Orleans.Runtime.Scheduler.AsyncClosureWorkItem.Execute()
   at Orleans.Runtime.Silo.StartAsync(CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at System.Threading.Tasks.Task.Wait()
   at Squidex.Config.Orleans.SiloWrapper.Initialize() in /Users/christopher/Projects/scratch/squidex/src/Squidex/Config/Orleans/SiloWrapper.cs:line 153
   at Squidex.Config.Domain.SystemExtensions.RunInitialization(IServiceProvider services) in /Users/christopher/Projects/scratch/squidex/src/Squidex/Config/Domain/SystemExtensions.cs:line 24
   at Squidex.WebStartup.Configure(IApplicationBuilder app) in /Users/christopher/Projects/scratch/squidex/src/Squidex/WebStartup.cs:line 40
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
   at Microsoft.AspNetCore.Hosting.Internal.WebHost.StartAsync(CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token, String shutdownMessage)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token)
   at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
   at Squidex.Program.Main(String[] args) in /Users/christopher/Projects/scratch/squidex/src/Squidex/Program.cs:line 23

Ok, so switching to tag v1.10.0 and reloading the NuGet packages seems to have done the trick. Still, would be good to know why on master this exception is thrown.

It is thrown because I am stupid, sorry.

I am using TortoiseGit and it has this nice “Commit & Push” button. In this case it made me push something that should not have been pushed. But it is fixed now.

Great thanks for the fix!