Artigo: 183480 - Última revisão: segunda-feira, 7 de Julho de 2008 - Revisão: 7.2

Como depurar DLLs ISAPI no IIS 4.0, IIS 5.0, IIS 5.1 e IIS 6.0

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Recomendamos vivamente que todos os utilizadores actualizem para Microsoft (IIS) versão 7.0 em execução no Microsoft Windows Server 2008. O IIS 7.0 aumenta significativamente a segurança da infra-estrutura Web. Para mais informações sobre tópicos relacionados com a segurança do IIS, visite o seguinte Web site da Microsoft:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx (http://www.microsoft.com/technet/security/prodtech/IIS.mspx)
Para obter mais informações sobre o IIS 7.0, visite o seguinte Web site da Microsoft:
http://www.iis.net/default.aspx?tabid=1 (http://www.iis.net/default.aspx?tabid=1)

Nesta página

Expandir tudo | Reduzir tudo

INTRODUÇÃO

Este artigo descreve um método que pode utilizar para depurar uma extensão de ISAPI (Internet Server API) ou um ficheiro DLL de filtro. É necessário o Microsoft Visual C++ instalado no computador com o ISS (Serviços de informação Internet Information Services).

Mais Informação

Como depurar DLLs ISAPI no IIS 4.0, IIS 5.0 e IIS 5.1

  1. Criar uma versão de depuração da DLL de ISAPI. Por predefinição, o subdirectório de depuração do projecto será agora conter *.dll e dois ficheiros com uma extensão *.pdb (por exemplo, c:\MyProj\debug directório).
  2. Criar uma raiz virtual com permissões de execução na gestão do IIS da consola e defina a localização física para directório de depuração do projecto (por exemplo, raiz virtual /MyProj será mapeado para c:\MyProj\Debug).
  3. Certifique-se de que o serviço W3SVC está em execução. Iniciá-lo se não estiver (pode utilizar este comando: net start w3svc ).
  4. Inicie o Microsoft Developer Studio. No menu criar , clique em Iniciar Debug e, em seguida, clique em Anexar o processo . Seleccione a opção Mostrar processos de sistema . Num computador baseado no Microsoft Windows 2000, por vezes, existem processos aparecerá na lista de processos.

    Para obter informações adicionais sobre este problema, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
    235434  (http://support.microsoft.com/kb/235434/ ) CORRECÇÃO: "Anexar ao processo" lista está vazia
    Para anexar um depurador a um determinado processo, clique no separador processos do Gestor de tarefas , clique com o botão direito do rato no processo que pretende e, em seguida, clique em Depurar .
  5. Na lista de processos em execução, seleccione INETINFO .
  6. No menu projecto , clique em definições e, em seguida, clique no separador Debug . Na lista das categorias , clique em DLLs adicionais .

    Neste momento, deverá ver a mensagem que indica que os símbolos DLL foram carregados.
  7. Adicionar a extensão ISAPI ou DLL de filtro à lista.
  8. No menu ficheiro , clique em Abrir e, em seguida, abrir o ficheiro de origem para a DLL. Definir um ponto de interrupção no código de origem e, em seguida, submeter um pedido para o IIS a partir do browser (por exemplo, http:// server/myproj/mydll .dll). Se o depurador emite um sinal sonoro e recusa definir o ponto de interrupção, o motivo poderá ser uma diferença entre os ficheiros DLL e PDB. Reconstrua a DLL para resolver esta situação.
Nota : Se a aplicação está configurada para ser executada fora-de-proc no IIS 4.0 (ou em IIS 5.0 ou IIS 5.1 com uma definição de Protecção da aplicação de Média ou Alta ), ao anexar o depurador para Inetinfo.exe, este irá interromper não execução de uma DLL de extensão. Tem de anexar o depurador para o processo MTX.exe (ou Dllhost.exe num sistema baseado no Microsoft Windows XP ou Windows 2000) que hospeda a DLL de ISAPI. Porque pode existir mais do que um processo de MTX.exe (DLLHost.exe) em execução em simultâneo, poderá ter de adicionar código para a DLL de ISAPI que mostra o ID do processo (PID) na qual a DLL é carregada. Depois do PID é conhecido, é possível anexar o depurador para o MTX (DLLHOST) com o PID correspondente. Para o fazer, utilize o seguinte código:
#define _WIN32_WINNT 0x0400

#ifdef _DEBUG
char szMessage [256];
wsprintf (szMessage, "Please attach a debugger to the process 0x%X and click OK", 
										GetCurrentProcessId());
MessageBox(NULL, szMessage, "ISAPI/Filter Debug Time!",
                 MB_OK|MB_SERVICE_NOTIFICATION);
#endif
				
também, note que a definição de Protecção da aplicação de suporte de dados é a predefinição do IIS 5.0.

Como depurar um DLL de ISAPI no IIS 6

Se executar o IIS 6 no modo de isolamento do IIS 5, extensões e filtros são carregados por Inetinfo.exe. Pode utilizar os passos da secção "Como depurar DLLs ISAPI no IIS 4.0, IIS 5.0 e IIS 5.1" para depurar uma extensão de ISAPI ou uma DLL de filtro de ficheiros quando o IIS 6 é executado no modo de isolamento do IIS 5.

Se executar o IIS 6 no modo de isolamento do processo de trabalho, extensões e filtros são carregados pelo W3wp.exe. Para depurar uma extensão de ISAPI ou um filtro DLL no Microsoft Visual C++. NET, siga estes passos:
  1. Clique em Iniciar , clique em Executar , escreva Cmd e, em seguida, clique em OK .
  2. Na linha de comandos, escreva net stop W3svc e, em seguida, prima ENTER.
  3. Abra a extensão de ISAPI ou um projecto DLL de filtro no Visual C++. NET.
  4. No menu projecto , clique em Propriedades .
  5. Faça clique sobre a depuração e, em seguida, escreva o caminho para o ficheiro de W3wp.exe no computador na caixa comando .
  6. Escreva - a depuração na caixa de Argumentos de comando e, em seguida, clique em OK .
  7. Defina pontos de interrupção do projecto.
  8. No menu Debug , clique em Iniciar .
Nota Este método depuração executa W3wp.exe no contexto de segurança do utilizador. Não se trata de contexto de segurança em que é executada normalmente W3wp.exe.

Referências

O processo de depuração de extensões ISAPI e filtros em IIS totalmente é explicado na documentação do Microsoft Developer Network (MSDN). Pode ser encontrada nesta documentação na seguinte localização:
   Web Development
      Server Technologies
         Internet Information Services (IIS)
            SDK Documentation
               Internet Information Services 5.1
                  Programmer's Guide
                     Developing ISAPI Extension and Filters
                        Debugging ISAPI Extensions and Filters
				
Note que esta documentação não está instalada, a opção de instalação predefinida do NT Option Pack ou adicionando o IIS para o Windows 2000 ou Windows XP. Para obter esta documentação, visite o seguinte Web site da MSDN:
http://msdn.microsoft.com/library (http://msdn.microsoft.com/library)
Também pode transferir esta documentação no formato de ajuda compilado para o disco rígido local. Para o fazer, visite o seguinte site de transferências da Microsoft:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm (http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm)

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Services version 5.1
  • Microsoft Internet Information Services 5.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 6.0
Palavras-chave: 
kbmt kbtshoot kbbug kbdebug kbhowtomaster KB183480 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 183480  (http://support.microsoft.com/kb/183480/en-us/ )