Неверный поток протокола входящего потока табличных данных (TDS) - PullRequest
0 голосов
/ 31 декабря 2018

Я пытаюсь сохранить изменения в моей БД на созданном мной фильтре, который наследует ActionFilterAttribute.По сути, фильтр представляет собой базовый журнал API, который регистрирует все запросы, сделанные к моему API.Написано в .NET Core 2.2.

Я получаю следующую ошибку:

SqlException: поток протокола входящего потока табличных данных (TDS) неверен.Поток неожиданно завершился.

Этот только встречается на этом фильтре, а не на любом из моих контроллеров, использующих контекст БД.

Я регистрируюотфильтруйте в моем Startup.cs следующим образом:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AthenaContext>(opts => opts.UseSqlServer(Configuration["ConnectionString:AthenaDB"]));
    services.AddScoped<LogFilter>();
    services.AddMvc();
    services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info {Title = "Athena API", Version = "v1"}); });
}

И затем украсьте класс API с помощью: [ServiceFilter(typeof(LogFilter))]

Фактический фильтр (для краткости я удалил часть ненужного кода):

public class LogFilter : ActionFilterAttribute
{
    public readonly AthenaContext _db;

    public LogFilter(AthenaContext context)
    {
        _db = context;
    }

    public override void OnActionExecuting(ActionExecutingContext context)
    {
    ........
        //Log the request
        _db.ApiLogs.Add(new ApiLog
        {
            EndPoint = $"{controllerName}/{actionName}",
            RequestHeader = requestHeader,
            RequestBody = requestBody,
            IpAddress = ipAddress
        });

        //Save the DB changes
        _db.SaveChanges();

        //Execute the base request
        base.OnActionExecuting(context);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...