У меня есть простой метод GET, который возвращает IQueryable, и имеют некоторые предпосылки по запросу:WebAPI и OData - возвращение запрашиваемого с предпосылками
[Queryable(HandleNullPropagation = HandleNullPropagationOption.False)]
public IQueryable<Message> Get()
{
using (var session = RavenStore.GetSession())
{
var messages = session.Query<Message>().Where(x => x.TargetUserId == this.User.Identity.Name || x.SourceUserId == this.User.Identity.Name);
return messages;
}
}
Это RavenDB, кстати. Проблема у меня в том, что при выполнении идентификатор пользователя заменяется на «[EMPTY_STRING]», поэтому фактический запрос его работы заключается в следующем:
«TargetUserId: [[EMPTY_STRING]] ИЛИ SourceUserId: [[ EMPTY_STRING]] 'на индекс .....
который явно не прав.
Если я возвращаю List вместо IQueriable - он работает нормально, поэтому что-то позже в конвейере меняет запрос. Кто-нибудь знает, как это сделать?
Он работает, если вы сначала поместили имя в локальную переменную? –
Да, да, спасибо! Немного неожиданно :) Хорошо, я понимаю, что это имеет какое-то отношение к сфере видимости? IQueriable запускается после того, как User.Identity стерта или запущена в другом потоке? – Evgeni
Можете ли вы ответить на этот вопрос, чтобы я мог отметить его как таковой? – Evgeni