servicestack,.net Core,servicestack" /> servicestack,.net Core,servicestack" />

.net core ServiceStack中的IFeatureCollection已被释放错误

.net core ServiceStack中的IFeatureCollection已被释放错误,.net-core,servicestack,.net Core,servicestack,我们在.net core上使用servicestack(5.8.0)已有一段时间了,但最近我们开始在servicestack中抛出一个: Could not Set-Cookie 'ss-id': IFeatureCollection has been disposed. Object name: 'Collection'.``` 及 System.ObjectDisposedException:IFeatureCollection已被释放。 对象名称:“集合”。 在Microsoft.Asp

我们在.net core上使用servicestack(5.8.0)已有一段时间了,但最近我们开始在servicestack中抛出一个:

Could not Set-Cookie 'ss-id': IFeatureCollection has been disposed.
Object name: 'Collection'.```

System.ObjectDisposedException:IFeatureCollection已被释放。
对象名称:“集合”。
在Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()中
在Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestServices()上
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\NetCore\NetCoreRequest.TryResolveT中的ServiceStack.NetCore.NetCoreRequest.TryResolveT处:第59行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.Runtime.cs中的ServiceStack.ServiceStackHost.GetCacheClient(IRequest req)处:第729行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceExtensions.RemoveSession中的ServiceStack.ServiceExtensions.RemoveSession(IRequest httpReq,字符串sessionId):第100行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Auth\AuthProvider.Logout(IServiceBase服务,身份验证请求)中的ServiceStack.Auth.AuthProvider.Logout(IServiceBase服务,身份验证请求):第102行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Auth\AuthenticateService.cs中的ServiceStack.Auth.AuthenticateService.Authenticate(身份验证请求)处:第348行
在c:\TeamCity\InteraciveBuildAgentKAH\work\1eb375e8315a0940\ELettingWebService\Startup.cs中的elett.WebService.AppHost.c__显示Class1_0.b__5(IRequest httpReq、IResponse httpRes、Object requestDto)
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.ApplyRequestFiltersSingleAsync(IRequest-req、IResponse-res、Object-requestDto)中的ServiceStack.ServiceStackHost.ApplyRequestFiltersSingleAsync(IRequest-req、IResponse-res、Object-requestDto)处
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.ApplyRequestFiltersAsync(IRequest-req、IResponse-res、Object-requestDto)中的ServiceStack.ServiceStackHost.ApplyRequestFiltersAsync中:第132行
在C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\RestHandler.cs中的ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest-req、IResponse-httpRes、String-operationName)中:第122行
不幸的是,错误似乎是零星的和间歇性的-所以我们一直在努力获得一个准确的复制。我从其他帖子中知道,这与访问底层的IHttpContextAccessor有关——但鉴于我们从未直接访问过它,我们正在努力弄清这一点。上面的错误显示它在处理身份验证cookies的代码中,但这同样不在我们的控制范围内

还有谁碰巧看到过这个吗

谢谢
如果请求上下文不存在或已提前终止,则通过谷歌搜索David

。您是否正在使用IHttpContextAccessor?另外,请确保您的应用程序中没有使用ASP.NET Core不支持的
async void
任何位置。我们从不直接使用IHttpContextAccessor,只有服务堆栈在内部使用。我们在任何地方都不使用异步void。所以,在同样的迷失中。这些注销请求是从Web应用程序(例如HTML或Ajax)还是从API调用的?可能客户端在发出注销请求后立即终止了连接,例如,它是从
windows.onunload
事件发送的。我想我已经找到了罪魁祸首-我们有一个服务,它将尝试通过执行“ResolveService().Post(新身份验证)”来登录刚刚注册的用户{provider=CredentialsAuthProvider.Name,UserName=req.Email,Password=req.Password}]。该请求是一个高级注册表单,需要大量额外数据。不这样做会导致错误不会发生,但会在注册后强制用户登录。有没有更好的支持方法来实现直接登录用户?失败的API请求是
身份验证{provider=“logout”}
请求终止后发送的请求。在AuthProvider中,您可以覆盖
Logout()
并在try catch中包装
base.Logout(…)
,以检查导致请求失败的请求以及请求管道中终止的位置。
System.ObjectDisposedException: IFeatureCollection has been disposed.
Object name: 'Collection'.
at Microsoft.AspNetCore.Http.Features.FeatureReferences`1.ThrowContextDisposed()
at Microsoft.AspNetCore.Http.DefaultHttpContext.get_RequestServices()
at ServiceStack.Host.NetCore.NetCoreRequest.TryResolveT in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\NetCore\NetCoreRequest.cs:line 59
at ServiceStack.ServiceStackHost.GetCacheClient(IRequest req) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.Runtime.cs:line 729
at ServiceStack.ServiceExtensions.RemoveSession(IRequest httpReq, String sessionId) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceExtensions.cs:line 100
at ServiceStack.Auth.AuthProvider.Logout(IServiceBase service, Authenticate request) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Auth\AuthProvider.cs:line 102
at ServiceStack.Auth.AuthenticateService.Authenticate(Authenticate request) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Auth\AuthenticateService.cs:line 348
at ELetting.WebService.AppHost.<>c__DisplayClass1_0.<Configure>b__5(IRequest httpReq, IResponse httpRes, Object requestDto) in C:\TeamCity\InteraciveBuildAgentKAH\work\1eb375e8315a0940\ELettingWebService\Startup.cs:line 177
at ServiceStack.ServiceStackHost.ApplyRequestFiltersSingleAsync(IRequest req, IResponse res, Object requestDto) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.Runtime.cs:line 180
at ServiceStack.ServiceStackHost.ApplyRequestFiltersAsync(IRequest req, IResponse res, Object requestDto) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\ServiceStackHost.Runtime.cs:line 132
at ServiceStack.Host.RestHandler.ProcessRequestAsync(IRequest req, IResponse httpRes, String operationName) in C:\BuildAgent\work\3481147c480f4a2f\src\ServiceStack\Host\RestHandler.cs:line 122