I'm experiencing the same problem as described here and my set up is almost identical to this that is actually based on this guide. When I access a method in my controller I get this
An error occurred when trying to create a controller of type
'TestController'. Make sure that the controller has a parameterless
public constructor.
Here's the stack trace
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator
.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor,
Type controllerType)
at System.Web.Http.Controllers.HttpControllerDescriptor
.CreateController(HttpRequestMessage request)
at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()
And here's the inner exception's stack trace
at System.Linq.Expressions.Expression.New(Type type)
at System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType)
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator
.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)
at System.Web.Http.Dispatcher.DefaultHttpControllerActivator
.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
Here's what my controller looks like
public class TestController : ApiController
{
private readonly ITestRepo _repo;
public TestController(ITestRepo repo)
{
_repo = repo;
}
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
public string Get(int id)
{
return _repo.GetId(id);
}
}
And here's how I set up Simple Injector
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Create the container as usual.
var container = new Container();
// Register your types, for instance using the RegisterWebApiRequest
// extension from the integration package:
container.RegisterWebApiRequest<ITestRepo, TestRepo>();
container.RegisterWebApiControllers(GlobalConfiguration.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver =
new SimpleInjectorWebApiDependencyResolver(container);
//
ConfigureOAuth(app, container);
var config = new HttpConfiguration();
WebApiConfig.Register(config);
app.UseWebApi(config);
}
}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…