Пишу фильтр-логгер запросов. MVC WebAPI+NInject.
Класс фильтра:
public class LogFilter : IActionFilter
{
private LogInfo Info { get; set; } = new LogInfo();
public LogFilter(IMobileDal dal)
{
Dal = dal;
}
private IMobileDal Dal { get; }
public bool AllowMultiple { get; } = true;
public async Task<HttpResponseMessage> ExecuteActionFilterAsync(HttpActionContext actionContext, CancellationToken cancellationToken, Func<Task<HttpResponseMessage>> continuation)
{
Info.Action = actionContext.Request.Method.Method;
Info.Url = actionContext.Request.RequestUri.ToString();
Info.DateBegin = DateTime.Now;
using (var sr = new StreamReader(actionContext.Request.Content.ReadAsStreamAsync().Result))
{
sr.BaseStream.Position = 0;
Info.Request = sr.ReadToEnd();
}
var result = await continuation();
Info.DateEnd = DateTime.Now;
using (var sr = new StreamReader(result.Content.ReadAsStreamAsync().Result))
{
sr.BaseStream.Position = 0;
Info.Response = sr.ReadToEnd();
}
Info.Status = (int)result.StatusCode;
Dal.AddLogRecord(Info);
return result;
}
}
Привязка в NInject:
this.BindHttpFilter<LogFilter>(FilterScope.Action)
.WithConstructorArgument("dal", context => context.Kernel.Get<IMobileDal>());
Запросы отрабатывают, записи сваливаются в базу, я вижу ожидаемый результат - но на выходе получаю 500 Internal server error. При том, что в result
- вполне себе 200.
Что может быть не так?
By design the body content in ASP.NET Web API is treated as forward-only stream that can be read only once.
https://stackoverflow.com/questions/12494067/read-httpcontent-in-webapi-controller/12494758#12494758
И после того, как я прочитал результат - клиент его получить уже не смог.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
В программе работающей под Windows 10 нажав на кнопку в которой прописано:
В приложении важны доли секунды для точных вычисленийМожно ли после введенного значения в TextBox нажав кнопку Enter выполнялся какой либо блок...
Есть html код, использую CsQuery, собственно как правильно вытащить селекторы из этого кодаИнтересует, как мне выдрать Менеджер по грузоперевозкам...