0

我有一个在 Azure App Service 上运行的 ASP.NET Web API 应用程序,该应用程序在 TFS 构建定义完成后又通过 Octopus 部署。

在某些成功部署后(在 TFS 和 Octopus 中都没有发生错误),整个 API 停止工作,所有端点都响应以下错误:

System.BadImageFormatException
Index not found. (Exception from HRESULT: 0x80131124)

堆栈跟踪如下所示:

System.BadImageFormatException: Index not found. (Exception from HRESULT: 0x80131124)
   at System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
   at System.Web.Mvc.Async.AsyncResultWrapper.Begin[TState](AsyncCallback callback, Object callbackState, BeginInvokeDelegate`1 beginDelegate, EndInvokeVoidDelegate`1 endDelegate, TState invokeState, Object tag, Int32 timeout, SynchronizationContext callbackSyncContext)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

该错误有点神秘,因为它似乎与源代码中的任何特定更改集或任何特定操作无关。这就是为什么它看起来很随机。目前,我发现暂时解决此问题的唯一方法是重新部署相同的 Octopus 包。这将恢复 API。

但是,了解发生此错误时应用程序的实际情况会很有用。没有找到哪个索引?获得 BadImageFormatException 是什么意思?

我怀疑 Octopus 和 Azure Web App 之间发生了一些事情。

一些附加信息:
Octopus 版本是 v2018.6.2
TFS 版本是 15.117.27414.0
ASP.NET 应用程序目标 .NET 4.5.2

我发现的另一个信息是,在 Octopus 中的第一次部署(导致失败的那个)之后,我在日志中看到了以下行:

  17:16:00   Info     |       Successfully deployed to Azure. 0 objects added. 48 objects updated. 0 objects deleted.

现在,在 Octopus 中的第二次部署(重新部署失败的版本)之后,人们期望“更新 0 个对象”,但我得到了以下行:

18:48:57   Info     |       Successfully deployed to Azure. 0 objects added. 3 objects updated. 0 objects deleted.
4

0 回答 0