Ответ 1
Вы можете использовать словарь Request.Properties
для этого.
В фильтре:
MyType myObject = //initialize from somwhere
actionContext.Request.Properties.Add("mykey", myObject);
И затем вы можете получить его в контроллере:
object myObject;
Request.Properties.TryGetValue("mykey", out myObject);
//cast to MyType
Преимущество такого подхода заключается в том, что текущий экземпляр запроса доступен повсюду в конвейере веб-API, поэтому вы можете получить доступ к этому объекту, то есть в Formatter или MessageHandler тоже.