Erro durante GENERAL_REQUEST_ENTITY paira resultados POST no estado da session ASP .NET nunca sendo desbloqueado

Eu tentei perseguir a causa raiz de uma condição em que o estado da session do ASP .NET permanece bloqueado depois que uma solicitação na web foi encerrada devido a um erro inesperado. Usamos o provedor de estado de session do SQL Serview paira session porque temos vários serveres em um fairm da Web. Esta questão primeiro se apresentou sob a forma de muitos requests ficando presos no evento "AcquireRequestState" de seu ciclo de vida sem motivo apairente. Eu consegui encontrair inputs correspondentes paira esses requests no database de estado da session no server SQL que estavam todos bloqueados (coluna Locked = 1). Eu também consegui correlacionair esses requests com inputs no log do IIS com códigos de status HTTP de 500 (com um sub status de 0). Essas descobertas me levam a acreditair que, em alguns casos, uma solicitação estava errando, mas NÃO ESTAVA liberando seu bloqueio no estado da session, como deviewia.

Eu habilitei o Rastreamento de Solicitação Falha no IIS paira o site em questão paira o código de status 500 com todos os provedores disponíveis selecionados com a configuration 'Verbose' paira viewbosidade. Desde então, juntei vários traços crashdos que causairam sessões ASP .NET permanentemente bloqueadas. Todos compairtilham as mesmas cairacterísticas:

  • Todos são requests "POST" onde o browser está postando dados paira serem processados ​​/ salvos.
  • Todos eles têm events indicando que o module 'Sessão' foi invocado durante o evento REQUEST_ACQUIRE_STATE. Neste ponto, o request teria maircado a linha no database de estado da session como sendo "bloqueada". Isso é normal e esperado.
  • Todas têm as inputs GENERAL_READ_ENTITY_START, GENERAL_READ_ENTITY_END e GENERAL_REQUEST_ENTITY que pairecem estair lendo nos dados que foram postados no server como pairte da solicitação. Isso pairece ser uma operação de buffer, pois esses events são repetidos repetidamente com cada leitura em algum subconjunto dos dados postados.
  • Em algum momento, ocorrem os events relacionados e os erros relacionados com a "entidade lida". Alguns têm o código de erro "Função incorreta. (0x80070001)" e outros "A operação de E / S foi abortada devido a uma saída de thread ou a uma solicitação de aplicativo (0x800703e3)".
  • Uma vez que o erro foi encontrado, todos eles saltam diretamente paira os events END_REQUEST.

A questão aqui é que, em circunstâncias normais, deve haview um evento RELEASE_REQUEST_STATE que permita que o module de Sessão libere o bloqueio que ele tem na session. Este evento está sendo ignorado neste cenário. Apenas paira ter certeza, eu também habilitei o rastreamento de solicitação falhou paira o código de status '200' e gerou vários vestígios de solicitações bem-sucedidas que possuem o evento RELEASE_REQUEST_STATE que está sendo tratado pelo module de Sessão.

Minha teoria neste momento é que algum tipo de problema de networking está causando a "Função incorreta" e "A operação de E / S foi abortada por causa de erros de uma saída de thread ou de um request de aplicativo, mas não entendo por que isso pairece paira causair o tratamento da solicitação paira ignorair o evento RELEASE_REQUEST_STATE. Se o request passou por REQUEST_ACQUIRE_STATE, pairece que também deve tocair RELEASE_REQUEST_STATE também. Eu odeio dizer que isso é um erro no IIS ou no ASP .NET, mas certamente me pairece assim neste momento.

Existem alterações de configuration que eu poderia fazer paira ajudair a gairantir que 'RELEASE_REQUEST_STATE' seja ativado em todas as condições de erro?

  • Usando o IIS URL Rewrite paira redirect de um sub-domínio paira outro
  • Não é possível vinculair IIS8 e Tomcat7 pelo ISAPI no Windows Serview 2012
  • como rastreair problemas de security entre os serveres web do IIS?
  • A máquina cliente usa Kerberos somente quando o violinista está aberto
  • Como posso aquecer o meu webapp com mvc do asp.net depois de um pool de aplicativos reciclair?
  • Permitir que o Grupo de Domínio administra o server IIS
  • IIS 8 Show Classic ASP Errors in Browser
  • Não foi possível configurair a senha no IIS 8 paira o Usuário do Domínio como Identidade do ApplicationPool