У меня проблемы с внедрением текущего loggedonuser в мой сервисный уровень, я пытаюсь сделать что-то похожее на сервер кода лагеря, но не могу понять, почему мой код не работает ...
Мое приложение: уровень пользовательского интерфейса -> подключен к службе домена -> подключен к уровню репо ...
Репо не подключено к пользовательскому интерфейсу, все проверено, проверено и передано обратно из слоя DomainService ...
Мой код:
// Это объявлено внутри моей доменной службы
public interface IUserSession
{
UserDTO GetCurrentUser();
}
Внутри моего веб-приложения я хочу внедрить этот сервис, а затем внедрить его в свой сервисный слой, чтобы (вот где я застрял):
public class UserSession : IUserSession
{
//private IAuthorizationService _auth;
public UserSession()//IAuthorizationService _auth)
{
//this._auth = _auth;
}
public UserDTO GetCurrentUser()
{
var identity = HttpContext.Current.User.Identity;
if (!identity.IsAuthenticated)
{
return null;
}
return null;
//return _auth.GetLoggedOnUser(identity.Name);
}
}
Что я ХОЧУ сделать: получить loggedonuser из службы аутентификации, однако это не сработало, поэтому я заглушил код ...
Я связываю все в global.asax как:
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
// hand over control to NInject to register all controllers
RegisterRoutes(RouteTable.Routes);
Container.Get<ILoggingService>().Info("Application started");
//here is the binding...
Container.Bind<IUserSession>().To<UserSession>();
}
Во-первых: я получаю исключение, когда пытаюсь использовать службу, использующую IUserSession. В нем говорится, что необходимо предоставить конструктор по умолчанию для контроллера x, но если я удалю ссылку из службы домена, все будет работать ...
Сервисный центр:
private IReadOnlyRepository _repo;
private IUserSession _session;
public ActivityService(IReadOnlyRepository repo, IUserSession _session)
{
this._repo = repo;
this._session = _session;
}
Есть ли лучший способ / более простой способ реализовать это?
UPATE с помощью приведенного ниже ответа мне удалось это сделать, я загрузил на gituhub, если кто-то хочет знать, как я это сделал ...
https://gist.github.com/1042173