Ответ Kieron является лучшим до сих пор. Если у Вас есть проблемы, потому что первая программа буферизует, можно использовать освобождать буфер программу:
unbuffer | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; }'
Это установлено по умолчанию в большинстве систем Linux. Если необходимо создать его сами, это - часть ожидать пакета
Таким образом, другие объекты не будут иметь доступа к этому объекту (например, ActionFilter). Я делаю это так:
public interface IUserDataStorage<T>
{
T Access { get; set; }
}
public class HttpUserDataStorage<T>: IUserDataStorage<T>
where T : class
{
public T Access
{
get { return HttpContext.Current.Session[typeof(T).FullName] as T; }
set { HttpContext.Current.Session[typeof(T).FullName] = value; }
}
}
Затем я могу либо ввести IUserDataStorage в конструктор контроллера, либо использовать ServiceLocator.Current.GetInstance (typeof (IUserDataStorage
public class MyController: Controller
{
// automatically passed by IoC container
public MyController(IUserDataStorage<MyObject> objectData)
{
}
}
Конечно, для случаев, когда это необходимо всем контроллерам (например, ICurrentUser), вы можете вместо этого использовать внедрение свойств.