rdb: a Depuração Pré-Executado (clássico) ASP – Texto Aberto Soluções de Web do Grupo e.V.

  • RedDot CMS Blog
  • 15.11.2019
  • PT

rdb: a Depuração Pré-Executado (clássico) ASP

O Problema

eu tenho certeza que praticamente todos os RedDot CMS Web de Soluções de Gerenciamento de Servidor do desenvolvedor teria chegado até contra alguns pré-executado ASP em seus modelos que falhou. A frustração que se seguiu por não ter nenhum método integrado de depuração ou mesmo apenas obter algum tipo de mensagem de erro significativa do CMS WSMS é um dos aborrecimentos mais discutidos do produto. Claro, há o plug-in depurador pré-executar, mas para usá-lo, as alterações devem ser feitas no RDServer.arquivo ini. Essas alterações podem tornar um projeto inutilizável ou até mesmo travar o servidor de gerenciamento de Soluções Web RedDot CMS …err… (experimentei os dois cenários várias vezes). O último, é claro, pode ser corrigido por uma reinicialização, mas se este for um sistema de produção ocupado, isso simplesmente não é prático.

certamente, deve haver alguma maneira de obter esses erros fora do sistema e de volta para o desenvolvedor?

a solução

eu não sei se eu sou a primeira pessoa a pensar nisso, mas eu não vi isso discutido antes, então espero que esta seja uma informação útil.

algum fundo

ASP pré-executado é renderizado pelo CMS WSMS antes de ser passado para o IIS para ser executado. O código resultante é passado de volta para CMS WSMS para inclusão na página. Embora você não o veja, se o ASP falhar, um erro 500 é gerado pelo IIS. Infelizmente, essas informações sobre o erro 500 são perdidas à medida que os dados são passados entre CMS WSMS e IIS e vice-versa.

insira a Página de erro personalizada

no IIS, é possível definir uma página de erro personalizada para cada tipo de erro que ocorre no servidor web. Isso é tradicionalmente usado para fornecer aos usuários finais uma página significativa de 404 em sites publicados. Podemos aproveitar essa funcionalidade para definir uma página de erro personalizada para um erro 500 no servidor CMS WSMS. Além disso, as pessoas da Microsoft viram seu caminho claro para também fornecer um objeto de erro que só está disponível a partir de um erro 500 e retorna um monte de informações úteis sobre o erro. Assim, podemos capturar as informações de erro e registrá-las em um arquivo.

o processo

a primeira coisa que precisamos fazer é criar algumas pastas.

  1. sob sua pasta CMS WSMS (CMS / ASP), crie uma pasta chamada “PreExecute”.
  2. sob a nova pasta, crie mais dois chamados “logs”e ” asp”. A conta IUSR da máquina deve ter acesso de gravação a ambas as pastas.

em seguida, precisamos definir as configurações RDExecute e PreExecute.

  1. em seu projeto, em “administrar configurações do projeto” >” projeto “> “Configurações Gerais”, selecione” Editar Configurações ” no menu de ação.
  2. Em “RDExecute e PreExecute settings”, definir o “caminho Físico” para “C:\Program Files\RedDot\CMS\ASP\PreExecute\asp” (ou o caminho para a pasta se a sua instalação é diferente) e o “diretório Virtual do IIS ()” para “/CMS/PreExecute/asp/”

neste ponto, verifique se o seu pré-execução ainda está trabalhando no seu projeto.

agora para criar o manipulador de erros personalizado.

  1. crie um arquivo ASP em sua pasta CMS/ASP/PreExecute/asp, chame-o como quiser, algo como ASPError.aspide.
  2. Copie o seguinte código no arquivo:
    <% ' Create the error object. Dim objASPError Set objASPError = Server.GetLastError ' Write the error information to a file (formatting of the second argument is for readability only). WriteToFile "C:\Program Files\RedDot\CMS\ASP\PreExecute\logs\PreExecuteErrors_" & Year(Now) & Month(Now) & Day(Now) & ".log", " Date/Time: " & Now() & vbCrLf & " ASP Code: " & objASPError.ASPCode & vbCrLf & "ASP Description: " & objASPError.Description & vbCrLf & " Category: " & objASPError.Category & vbCrLf & " Column: " & objASPError.Column & vbCrLf & " Description: " & objASPError.Description & vbCrLf & " File: " & objASPError.File & vbCrLf & " Line: " & objASPError.Line & vbCrLf & " Number: " & objASPError.Number & vbCrLf & " Source: " & objASPError.Source & vbCrLf & "############################################################" & vbCrLf, True Function WriteToFile(FileName, Contents, Append) On Error Resume Next If Append = True Then iMode = 8 Else iMode = 2 End If Dim oFs, oTextFile Set oFs = Server.CreateObject("Scripting.FileSystemObject") Set oTextFile = oFs.OpenTextFile(FileName, iMode, True) oTextFile.Write Contents oTextFile.Close Set oTextFile = Nothing Set oFS = Nothing End Function %>

por fim, precisamos configurar o IIS.

  1. no Gerenciador de Serviços de Informações da Internet (IIS), selecione a pasta em “Site Padrão” (ou qualquer site que você esteja usando para CMS WSMS) > “CMS” > “PreExecute” > “asp”.
  2. clique com o botão direito do mouse na pasta e selecione “Propriedades”.
  3. selecione a guia “erros personalizados”. Role para baixo até encontrar “500;100” na coluna de erro HTTP.
  4. realce-o e clique em ” Editar…”.
  5. altere o “tipo de Mensagem: “para” URL “e defina o” URL: “para” / CMS / PreExecute/asp / ASPError.asp”

testando

para testar é muito simples. Supondo que sua pré-execução estivesse funcionando anteriormente, você deve ser capaz de adicionar algum código ASP quebrado ao seu modelo (por exemplo, <!IoRangePreExecute><%= functionThatDoesNotExist() %><!/ IoRangePreExecute >) e visualize a página. Você deve obter a página de erro CMS WSMS padrão (leia inútil), mas você também deve obter um arquivo de log criado em sua pasta CMS/ASP/PreExecute/logs com informações detalhadas sobre o erro ASP que ocorreu.

avisos

se você estiver executando um CMS wsms agrupado, você pode querer ter cuidado com este procedimento. Quando tentei alterar as configurações de pré-execução em um ambiente CMS wsms agrupado, não só não funcionou, mas também derrubou a publicação de todos os projetos. Não investiguei mais isso nesta fase, se e quando o fizer, publicarei minhas descobertas.

ASP.NET

o método descrito acima só funciona para ASP clássico. Seria ótimo se alguém descrevesse o processo equivalente para ASP.NET. algum tomador?

Write a Comment

O seu endereço de email não será publicado.