簡體   English   中英

Azure網站上的“任務已取消”錯誤

[英]“Task was canceled” errors on Azure website

隨着我們Azure網站的流量增加,我們已經看到越來越多的“任務被取消”錯誤。 典型的跟蹤可能如下所示:

Fatal web api error: Controller: CustomerUserEventsController; 
Url: http://app.payboard.com/api/organizations/9ddf55d1-e0c1-4a8f-9327-eef38682e090/addcustomeruserevent?callback=jQuery210035782216349616647_1398442710964&cookieId=05be2755-dc0d-414d-b0d2-ea1986a929c3&customerId=&customerName=&customerUserId=&customerUserFirstName=&customerUserLastName=&eventName=hr-index-GET&_=1398442710965; 
Error: A task was canceled. ( at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext())

我們過去常常每天得一個; 它一直在逐漸增加,所以現在我們得到了幾十個。

您會注意到堆棧跟蹤中只有框架代碼 - 我們的代碼根本就沒有。 所以我對如何解決它有點不知所措。 關於如何跟蹤這些問題的任何建議?

看到答案:

瀏覽器取消請求時的ASP.NET Web API OperationCanceledException

這里的WebAPI錯誤:

http://aspnetwebstack.codeplex.com/workitem/1797

基本上,當HTTP請求被取消時,例如,如果用戶關閉發起請求的頁面,則是預期的。 為了防止它出現在日志中,基本上,您只需要創建一個可以抑制錯誤的自定義消息處理程序:

/// <summary>
/// See https://stackoverflow.com/questions/22157596/asp-net-web-api-operationcanceledexception-when-browser-cancels-the-request
/// </summary>
public class CancelledTaskBugWorkaroundMessageHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var response = await base.SendAsync(request, cancellationToken);

        // Try to suppress response content when the cancellation token has fired; ASP.NET will log to the Application event log if there's content in this case.
        if (cancellationToken.IsCancellationRequested)
        {
            return new HttpResponseMessage(HttpStatusCode.InternalServerError);
        }

        return response;
    }
}

有完全相同的問題。 在我的情況下,解決方案是將權限(https URL)從https://login.windows.net/ ...更改為https://login.microsoftonline.com/ ...因為無法再訪問它。 我沒有發布完整的權限,因為它是我們組織的特定權限。 從理論上講,第一個更直接,所以我根據微軟專家的建議使用它。 但如果無法達到則存在問題。 需要弄清楚為什么它無法到達。

希望這將有助於解決您的問題。 此致,科恩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM