2013-07-23 7 views
0

я следующее, чтобы создать журналы информацию в моем хранилище метод: -Не удалось получить имя пользователя для текущего пользователя в моем хранилище модели класса

var currentUser = User.Identity.Name; 

var auditinfo = IntiateAudit(tms.AuditActions.SingleOrDefault(a => a.Name.ToUpper() == "DELETE").ActionID, tms.TechnologyTypes.SingleOrDefault(a => a.Name.ToUpper() == "Server").AssetTypeID, currentUser, server.ServerID); 

Но я не могу получить значения User.Identity.Name внутри мой метод репозитория, в то время как я могу сделать это внутри моих методов действий с контроллером?

ответ

3

Вы не можете, потому что вам нужно обратиться к HttpContext. Если вы сделаете это внутри хранилища, вы сможете:

string name = HttpContext.Current.User.Identity.Name; 

Однако я хотел бы остаться в стороне от этого, так как вам необходимо будет ссылаться на System.Web в классах хранилища, которые должны быть частью общей другой проект и не должен даже иметь ссылку на System.Web для начала.

+0

благодарит за ответ. поэтому мне нужно передать имя пользователя из моего контроллера в мой репозиторий? и в чем проблема включения System.WEb в мой репозиторий? –

+0

@ Asp.netmvcAsp.netmvc Представьте сценарий, в котором вы хотите использовать свои классы репозитория в другом проекте, скажем, приложение Winforms. Если вы добавите зависимость к System.Web, это означает, что вашему приложению Winforms также потребуется ссылка на System.Web. Не только это, вызывая «HttpContext.Current ...» внутри вашего репозитория, ваш код будет разбит под приложением Winforms, потому что больше нет «HttpContext», поскольку нет никакого веб-запроса любого типа. Вы должны избегать такого рода вещей, чтобы максимизировать повторное использование кода. Читайте о разделении проблем. – Icarus

+0

спасибо за ответ, так что единственный способ - получить текущее имя пользователя из моих методов действий, а затем передать строку в мой репозиторий? –

Смежные вопросы