I don't know too much about ASP.Net but i know a thing or two about ninject.
So if i gather correctly your issue is, that whenever ninject can't resolve a request, the control is given back to the framework who then tries to instanciate the type - and fails with an exception stating that the type to resolve is missing a parameterless constructor.
This is unsatisfactorily since it's hard to figure out which binding is incorrect / failing.
To gather more information i suggest that you rewrite the glue code which passes resolution request on to ninject.
Instead of the IResolutionRoot.TryGet<>
method use the IResolutionRoot.TryGetAndThrowOnInvalidBinding<>()
method. This method will throw an exception in case there is a binding but ninject can't resolve it. ninject's IResolutionRoot.TryGet<>
swallows these kinds of issues.
Now if there is no explicit binding, ninject will still return null and the ASp.Net framework might still throw an exception stating that there is no missing parameterless constructor. I suggest there should be information about the type it tried to resolve on the exception. If that is somehow not the case, you change the ninject-glue-code to log all requests that it could not resolve.
Then you should create explicit bindings for all of these so you can narrow it down step-by-step.
EDIT:
In case you plan to define all bindings explicitly / you already have done so, go for IResolutionRoot.Get<>()
- without the try. This will always lead to a NinjectException whenever it can't resolve the type. The exception will tell you more on why it happened.
Also see Are controller factories neccessary when using Ninject in ASP.NET mvc 4 on how to write your own glue-code.