2017-02-11 3 views
-1

Я использую легкую инъекцию в asp mvc.Неразрешенная зависимость [Уровень обслуживания класса]

используя этот код в global.asax в asp mvc.

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     BundleConfig.RegisterBundles(BundleTable.Bundles); 
     var container = new ServiceContainer(); 
     container.RegisterControllers(); 
     container.RegisterControllers(typeof(Areas.Admin.AdminAreaRegistration).Assembly); 
     container.Register<INewsService, NewsService>(new PerScopeLifetime()); 
     container.Register<ICategoryService, CategoryService>(new PerScopeLifetime()); 
     container.EnableMvc(); 
    } 

и в контроллере:

private readonly INewsService _newsservice; 
    private readonly ICategoryService _categoryservice; 
    public AdminController(INewsService newsservice, ICategoryService categoryservice) 
    { 
     _newsservice = newsservice; 
     _categoryservice = categoryservice; 
    } 

но покажите мне эту ошибку:

неразрешенная зависимость [Target Type: DA.Service.Service.NewsService], [Parameter : Репозиторий (DA.Data.Repository.Repository 1[DA.Data.Domain.News])], [Requested dependency: ServiceType:DA.Data.Repository.Repository 1 [DA.Data.Domain.News], ServiceName:]

В чем проблема?

ответ

0

Видимо, вам нужно сообщить Unity, что такое реализация DA.Data.Domain.News.

NewsService зависит от News и не может быть неявно разрешен (либо не найден, либо имеет некоторые зависимости).

Кроме того, вы используете Unity в MVC неправильно. Используйте Unity для MVC NuGet.

+0

Путь, за исключением неиспользования, заключается в решении этой проблемы? – Kianoush

+0

«Путь, кроме неиспользования, заключается в решении этой проблемы?» ... какие? –

+0

вместо того, чтобы использовать единство там другим путем? – Kianoush

0

Ошибка указывает, что ваша служба INewsService и ICategoryService имеют зависимости (репозитории), которые не зарегистрированы в контейнере. Вам нужно зарегистрировать весь граф объектов. Я бы ожидал, что ваша регистрация будет выглядеть примерно так:

var container = new ServiceContainer(); 
    container.RegisterControllers(); 
    container.RegisterControllers(typeof(Areas.Admin.AdminAreaRegistration).Assembly); 
    container.Register<INewsService, NewsService>(new PerScopeLifetime()); 
    container.Register<IRepository<News>, Repository<News>>(new PerRequestLifetime()); 
    container.Register<ICategoryService, CategoryService>(new PerScopeLifetime()); 
    container.Register<IRepository<Category>, Repository<Category>>(new PerRequestLifetime()); 
    container.EnableMvc(); 
+0

thanx but stiil показать мне, что ошибка – Kianoush

+0

Измените свой вопрос и опубликуйте сообщение об ошибке, которое вы сейчас получаете (как текст, а не как изображение). – NightOwl888

+0

Я отредактировал вопрос – Kianoush