我正在尝试将更改保存到我创建的继承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"}); });
}
然后用[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);
}