-
-
Save hyrmn/894547 to your computer and use it in GitHub Desktop.
public class HyrmnBlogApplication : TurbineApplication | |
{ | |
public override void Startup() | |
{ | |
ServiceLocatorManager.SetLocatorProvider(() => new StructureMapServiceLocator(ObjectFactory.Container)); | |
base.Startup(); | |
} | |
protected override void ShutdownContext() | |
{ | |
CurrentContext = null; | |
ServiceLocator = null; | |
} | |
protected void Application_EndRequest() | |
{ | |
ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects(); | |
} | |
} |
StructureMap Exception Code: 202 | |
No Default Instance defined for PluginFamily Spark.ISparkSettings, Spark, Version=1.5.0.0, Culture=neutral, PublicKeyToken=7f8549eed921a12c | |
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. | |
Exception Details: StructureMap.StructureMapException: StructureMap Exception Code: 202 | |
No Default Instance defined for PluginFamily Spark.ISparkSettings, Spark, Version=1.5.0.0, Culture=neutral, PublicKeyToken=7f8549eed921a12c |
public class SparkBlade : Blade | |
{ | |
public override void Spin(IRotorContext context) | |
{ | |
ViewEngines.Engines.Clear(); | |
var sparkServiceContainer = SparkEngineStarter.CreateContainer(); | |
sparkServiceContainer.AddFilter(new SparkAreasDescriptorFilter()); | |
SparkEngineStarter.RegisterViewEngine(sparkServiceContainer); | |
var settings = ConfigurationManager.GetSection("spark") as ISparkSettings; | |
context.ServiceLocator.Register(settings); | |
} | |
} |
I don't know what to tell you since well, I didn't test the Ninject stuff.
ServiceLocatorManager.SetLocatorProvider(() => new WindsorServiceLocator());
Attempt by method 'MvcTurbine.Windsor.WindsorServiceLocator..ctor()' to access method 'MvcTurbine.Windsor.WindsorServiceLocator.CreateContainer()' failed.
I tested the Ninject stuff, as well as Windsor, StructureMap, and Unity. Enough code to make sure that the metadata stuff worked in each (multiple page hits, posting forms, etc). I even just demoed the StructureMap locator in a presentation less than an hour ago.
The only difference between what you wrote and every MVC Turbine application that I've ever written is that I always set the service locator in the constructor of the TurbineApplication. But I think Startup happens right about then, so I'm not sure yet.
I wish I could help more now, but it will have to be after hours.
The Windsor one is not working, at least with the nuget package. I emailed Javier about that last night, I'm almost positive that one is a versioning issue.
I did just try wiring up Ninject in the static constructor with the same issue.
public class MvcApplication : TurbineApplication
{
static MvcApplication()
{
// Register the IoC that you want Mvc Turbine to use!
// Everything else is wired automatically
ServiceLocatorManager.SetLocatorProvider(() => new NinjectServiceLocator());
}
}
You might hate me for this, but I ran your app locally, and....
It worked for me. I see a green site, with talk of you not being a ninja.
I did have to reinstall all of the nuget packages, because the references were broken. Plus, I'm running it under Cassini. I'll switch to IIS Express when I get home.
Ok... I'm either really using everything wrong or something else is going on.
PM> install-package mvcturbine
Successfully installed 'MVCTurbine 3.0'.
Successfully added 'MVCTurbine 3.0' to MvcApplication1.
PM> install-package mvcturbine.ninject
'Ninject (≥ 2.0)' not installed. Attempting to retrieve dependency from source...
Done.
'MVCTurbine 3.0' already installed.
You are downloading Ninject from Ninject Project Contributors, the license agreement to which is available at https://github.com/ninject/ninject/raw/master/LICENSE.txt. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
Successfully installed 'Ninject 2.2.1.0'.
Successfully installed 'MvcTurbine.Ninject 3.0'.
MvcApplication1 already has a reference to 'MVCTurbine 3.0'.
Successfully added 'Ninject 2.2.1.0' to MvcApplication1.
Successfully added 'MvcTurbine.Ninject 3.0' to MvcApplication1.
namespace MvcApplication1
{
public class MvcApplication : TurbineApplication
{
public override void Startup()
{
ServiceLocatorManager.SetLocatorProvider(() => new NinjectServiceLocator());
base.Startup();
}
}
}
Note... no view engine monkeying... heck, no routes or anything.
Now...
Error activating IRotorContext
No matching bindings are available, and the type is not self-bindable.
Activation path:
Suggestions:
Same for some other stuff.