Pergunta

auto-explicativo questão.

Por que essa coisa de bolha na minha tente pegar mesmo quando nada está errado?

Por que aparece no meu log, centenas de vezes?

Eu sei que é um newb pergunta, mas se esse site vai obter a classificação de pesquisa e desenhar em newbs temos de pedir-lhes

Foi útil?

Solução

Este é, provavelmente, vindo de uma Resposta.Redirecionamento de chamadas.Verifique este link para uma explicação:

http://dotnet.org.za/armand/archive/2004/11/16/7088.aspx

(Na maioria dos casos, a chamada de Resposta.Redirecionamento de url (, false) corrige o problema)

Outras dicas

A razão mais comum para um ThreadAbortException está chamando Resposta.Final, Resposta.Redirecionar ou Servidor.Transferência.A Microsoft publicou algumas sugestões de funções que devem ser utilizados no lugar de uma dessas funções.

Como outros têm dito, isso ocorre quando a chamada de Resposta.End() (o que ocorre quando você chamar Resposta.Redirecionar sem passar falso como o segundo parâmetro).Isso está funcionando como projetado;normalmente, se você chamar Resposta.Redirecionar você deseja redirecionar para acontecer imediatamente.Veja este para mais informações:

Resposta.Redirecionar e ThreadAbortException

Sabendo que existem (pelo menos) três APIs que internamente usa Thread.Abort, Eu gostaria de responder em termos mais práticos, como descobrir o que fazer sobre isso.

Para nós, esse erro começou a ser registrado tudo-de-uma-súbita.O que mudou?Nós corrigido um bug em algumas procedimento de banco de dados que estava lidando com os sitemaps.

O log4net logs mostrou o X-Forwarded-For cabeçalho (estamos atrás de um NLB) foi o Googlebot endereço IP, 66.249.78.x, que fez crescer a minha teoria sobre o sitemap mudar levando para o Google de rastreamento de nosso site de forma mais agressiva, procurando por imagens.

A primeira coisa foi descobrir por que só o Googlebot foi capaz de causar esse problema.Nenhum outro cliente que estava incitando qualquer que seja o caminho de código usa Response.Redirect, ou seja o que for.

Assim, no HttpApplication.Error manipulador, eu adicionei algumas código para iniciar sessão extra de saída detalhada com todos os cabeçalhos, e a maioria dos dados no HttpResponse e HttpContext botou para fazer logon.

Isso deixa-me ver que o problema foi que o Googlebot está usando um iPhone seqüência de agente do usuário e armado com isso, eu era capaz de pesquisar a base de código para "iPhone" e vir acima com:

private void CheckIPhoneAccess() { ... }

E que usa um Redirecionamento.

O que fazer sobre isso?

Bem, para esta idade codebase, não vale a pena retro-corrigir todos os Response.Redirect chama, então, eu estou indo para reduzir o nível de log para ThreadAbortException para a aplicação.

Eu vou mudar o comportamento para o Googlebot do rastreador móvel, que seria não levar 'mentiras' sobre o que o nosso site serve para celulares, pois apenas redireciona no primeiro golpe, posteriormente, ele lê um cookie e mostra a imagem.O Googlebot não parece cache de cookies.

Ele não é perfeito, mas o site é devido a ser reconstruído.provavelmente por outra equipe usando fones de ouvido Scala ou algo, assim, em termos práticos, eu acho que isso é uma boa escolha.Vou adicionar comentários e poderá rever a questão, mais tarde, construir uma Response.SafeRedirect extensão que encapsula a este conselho:

Por Resposta.Redirecionar causas do Sistema.Threading.ThreadAbortException?

Lucas

A razão do porquê da Resposta.Redirecionar vai dar essa exceção é asp.net internamente implementar esta API com Rosca.Abort().Quando este método é chamado, um especial ThreadAbortException é lançada.Esta excepção não vai ser engolido por qualquer bloco catch.Ele vai voltar a ser lançada no final de cada bloco catch.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top