ASP.Net MVC 4 Web API コントローラーが Unity.WebApi で動作しません。同じプロジェクトで、単純なコントローラーは Unity.Mvc3 で適切に動作します。しかし、ApiController から派生した Web API コントローラーを実行すると、次のメッセージが表示されます。
{"$id":"1","Message":"エラーが発生しました。","ExceptionMessage":"タイプ 'ElectricTests.Controllers.Api.DocumentsController' にはデフォルトのコンストラクターがありません","ExceptionType":" System.ArgumentException","StackTrace":" System.Linq.Expressions.Expression.New(Type タイプ) で\r\n System.Web.Http.Internal.TypeActivator.Create[TBase](Type instanceType) で\r\ System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator) で\r\n System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType) で)"}
私のApiController:
public class DocumentsController : ApiController
{
private readonly IDocumentsRepository _repository;
public DocumentsController(IDocumentsRepository repository) {
_repository = repository;
}
public IEnumerable<FormattedDocument> GetFormattedDocuments()
{
return _repository.GetAllFormattedDocuments();
}
...
Bootstrapper.cs:
public static class Bootstrapper {
public static void Initialise() {
IUnityContainer container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
private static IUnityContainer BuildUnityContainer() {
var container = new UnityContainer();
// register all your components with the container here
// it is NOT necessary to register your controllers
// e.g. container.RegisterType<ITestService, TestService>();
container.RegisterType<IDocumentsRepository, DocumentsRepository>();
container.RegisterType<IQuestionsRepository, QuestionsRepository>();
container.RegisterType<ITestRepository, TestsRepository>();
return container;
}
}
私の間違いはどこですか?