我已经为我的Web API应用程序设置了应用程序初始化请求,这样当应用程序池回收某些端点时,就会将实体框架等加载到新进程中。我可以在API日志中看到这些请求成功:
636603400963248247T16P14184 26/04/2018 11:48:16.324 - 要求:GET http://localhost/mywebapi/api/v2/warmup/contact/some-guid-value 主持人:localhost User-Agent:IIS应用程序初始化预热 内容长度:0
636603401013021709T8P14184 26/04/2018 11:48:30.297(8995ms) - 回复:200 GET http://localhost/mywebapi/api/v2/warmup/contact/some-guid-value Content-Type:application / json;字符集= UTF-8
但是,每当应用程序池回收并发出这些请求时,我都会得到两个事件日志条目,如下所示:
错误消息:与远程通信时发生错误 主办。错误代码是0x80070032。
异常类型:System.Web.HttpException
异常来源:System.Web
Stack Trace:at System.Web.Hosting.IIS7WorkerRequest.RaiseCommunicationError(的Int32 结果,布尔throwOnDisconnect)at System.Web.Hosting.IIS7WorkerRequest.ExplicitFlush()at System.Web.HttpResponse.Flush(布尔值finalFlush,布尔异步)at System.Web.HttpWriter.WriteFromStream(Byte []数据,Int32偏移量,Int32 System.IO.Stream。<> c.b__46_0(对象) 在System.Threading.Tasks.Task
1.InnerInvoke() at System.Threading.Tasks.Task.Execute() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.IO.Stream.EndWrite(IAsyncResult asyncResult) at System.Threading.Tasks.TaskFactory
1.FromAsyncCoreLogic(IAsyncResult) iar,Func2 endFunction, Action
1 endAction,Task`1 promise,Boolean requiresSynchronization) ---从抛出异常的先前位置开始的堆栈跟踪结束--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务) System.Web.Http.WebHost.HttpControllerHandler.d__15.MoveNext()内部异常:不支持请求。 (例外 HRESULT:0x80070032)
异常类型:System.Runtime.InteropServices.COMException
异常来源:System.Web
堆栈追踪:
事件日志条目的时间似乎与请求的时间和最终配置的应用程序初始化调用的响应一致。
在本地Windows 10开发框和Windows 2012服务器上运行网站时会发生这种情况。
有谁知道为什么会记录这些错误(鉴于预热请求似乎成功)以及我如何避免它们?