Como resolver problemas de ligações de SMB de ASP/IIS

Traduções de Artigos Traduções de Artigos
Artigo: 303802 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Este artigo mostra como reunir as informações adequadas para rever a ligação entre um servidor de Internet Information Server (IIS) e uma partilha SMB (Server Message Block).

Mais Informação

Este artigo pressupõe familiaridade com o Monitor de rede, Internet Information Server e o protocolo TCP/IP.

Eficazmente resolver problemas relacionados com SMB partilha de ficheiros, especialmente no que diz respeito para notificação de alteração e Active Server Pages (ASP), as informações mais úteis são um rastreio de rede do ficheiro que está a ser pedido fora da partilha SMB e provas de uma alteração relativamente a esse ficheiro.

Para obter uma rede rastreio de tráfego SMB para problemas de conteúdo/permissão obsoletos ASP/IIS efectue o seguinte:
  1. Feche janelas tudo Explorador do Windows e o Microsoft Internet Explorer e desligue quaisquer unidades mapeadas para a partilha SMB. Também Feche janelas cmd que estão abertas para essa partilha.
  2. Pare o serviço de administração do IIS (net stop iisadmin).
  3. No menu Capturar no Monitor de rede, aumente o tamanho da memória intermédia.
  4. Utilize o Monitor de rede para iniciar a captura.
  5. Reinicie o serviço de colocação na Web (net start w3svc).
  6. Pedir a página de teste num browser, preferência a partir de um computador que não seja o servidor de IIS.
  7. Estabeleça ligação com o servidor SMB e modificar a página de teste. Se possível, fazê-lo através de telnet ou localmente, mas não uma partilha SMB.
  8. Actualize a página de teste no Microsoft Internet Explorer e parar o rastreio.
Segue-se uma breve visão geral de como ISATQ.dll e ASP esvaziam páginas em cache e quais as informações do servidor SMB ASP/ISATQ é necessária (e porquê) para remover um modelo a partir da cache.

Para o ASP limpar a página ASP, é necessário obter um sucesso do redireccionador com um 0 para o tamanho da memória intermédia que contém o nome de ficheiro ou lista de ficheiros ou a contagem de parâmetros. Estas informações devem ser no pacote de notificação de alteração enviado pelo CIFS (Common Internet File System) / servidor SMB. Em vez da contagem de parâmetros 0 indica que existem demasiadas alterações à lista. Enviar uma lista de ficheiros é preferível enviar 0 (todos os ficheiros) e esta é a forma como a implementação do Windows do SMB processa este. Gerir ficheiros nos resultados forma de um aumento de desempenho em particular de sessão ASP e o estado da aplicação.

Para efeitos de exemplo, de rastreios os SAMBA abaixo os bits que indicam o estado e o parâmetro contagem são todos definidos para zeros, que faz com que o ASP para totalmente esvaziar a cache. Isto resultará numa degradação do desempenho (incluindo perder todas as sessões e ter a aplicação IIS reiniciar), mas irá limpar tudo a partir da cache.

Segue-se um exemplo de uma notificação de alteração provenientes SAMBA no Linux (14 de Agosto 2000/samba-2.0.7-21ssl e RedHat 7.0). Irá notar os bits não são todas 0 mas em vez disso são 0x10C 0 x 0. A conversão do pacote pelo Monitor de rede mostra que 0x10c STATUS_NOTIFY_ENUM_DIR. Assim, o computador SAMBA é sugerir que enumerar o directório mas não enviar um nome de ficheiro ou uma lista de ficheiros. Neste ponto é para o redireccionador para converter este pacote e enviar a notificação necessária até a cadeia para o processo de destino e o ficheiro que se refere este pacote.

Como pode ver no cabeçalho de SMB, esta notificação de alteração destinada PID 0x03DC (no caso de teste, isto era inetinfo). Este pacote não existe nenhum ficheiro de ID (FID). De rastreios SMB, é atribuído um FID para cada ficheiro. A melhor forma de obter o FID do ficheiro em questão consiste em verificar o ID é atribuído pelo redireccionador quando o ficheiro é obtido o sistema de ficheiros, bem como o ID de processo que necessita do ficheiro.
14957 106.687500 SMBUNIX 00508BF1348F SMB R NT transact - NT error, System, Success, Code = (268) STATUS_NOTIFY_ENUM_DIR SMBUNIX WIN2KSRV IP 
Frame: Base frame properties
    Frame: Time of capture = 7/3/2001 23:29:45.187
    Frame: Time delta from previous physical frame: 0 microseconds
    Frame: Frame number: 14957
    Frame: Total frame length: 129 bytes
    Frame: Capture frame length: 129 bytes
    Frame: Frame data: Number of data bytes remaining = 129 (0x0081)
ETHERNET: ETYPE = 0x0800 : Protocol = IP:  DOD Internet Protocol
    ETHERNET: Destination address : 00508BF1348F
        ETHERNET: .......0 = Individual address
        ETHERNET: ......0. = Universally administered address
    ETHERNET: Source address : 0060083194AD
        ETHERNET: .......0 = No routing information present
        ETHERNET: ......0. = Universally administered address
    ETHERNET: Frame Length : 129 (0x0081)
    ETHERNET: Ethernet Type : 0x0800 (IP:  DOD Internet Protocol)
    ETHERNET: Ethernet Data: Number of data bytes remaining = 115 (0x0073)
IP: ID = 0x6B1F; Proto = TCP; Len: 115
    IP: Version = 4 (0x4)
    IP: Header Length = 20 (0x14)
    IP: Precedence = Routine
    IP: Type of Service = Minimize Delay
    IP: Total Length = 115 (0x73)
    IP: Identification = 27423 (0x6B1F)
    IP: Flags Summary = 2 (0x2)
        IP: .......0 = Last fragment in datagram
        IP: ......1. = Cannot fragment datagram
    IP: Fragment Offset = 0 (0x0) bytes
    IP: Time to Live = 64 (0x40)
    IP: Protocol = TCP - Transmission Control
    IP: Checksum = 0xDE97
    IP: Source Address = 172.26.204.104
    IP: Destination Address = 172.26.204.32
    IP: Data: Number of data bytes remaining = 95 (0x005F)
TCP: .AP..., len:   75, seq: 979481609-979481684, ack:4234385737, win: 2920, src:  139 (NBT Session)  dst: 1266 
    TCP: Source Port = NETBIOS Session Service
    TCP: Destination Port = 0x04F2
    TCP: Sequence Number = 979481609 (0x3A61B409)
    TCP: Acknowledgement Number = 4234385737 (0xFC639949)
    TCP: Data Offset = 20 (0x14)
    TCP: Reserved = 0 (0x0000)
    TCP: Flags = 0x18 : .AP...
        TCP: ..0..... = No urgent data
        TCP: ...1.... = Acknowledgement field significant
        TCP: ....1... = Push function
        TCP: .....0.. = No Reset
        TCP: ......0. = No Synchronize
        TCP: .......0 = No Fin
    TCP: Window = 2920 (0xB68)
    TCP: Checksum = 0x7BF9
    TCP: Urgent Pointer = 0 (0x0)
    TCP: Data: Number of data bytes remaining = 75 (0x004B)
NBT: SS: Session Message, Len: 71
    NBT: Packet Type = Session Message
    NBT: Packet Flags = 0 (0x0)
        NBT: .......0 = Add 0 to Length
    NBT: Packet Length = 71 (0x47)
    NBT: SS Data: Number of data bytes remaining = 71 (0x0047)
SMB: R NT transact - NT error, System, Success, Code = (268) STATUS_NOTIFY_ENUM_DIR
    SMB: NT status code = 0x10C, Facility = System, Severity = Success, Code = (268) STATUS_NOTIFY_ENUM_DIR
            SMB: NT Status Severity Code = Success
            SMB: NT Status Customer Code = 0 (0x0)
            SMB: NT Status Reserved Bit = 0 (0x0)
            SMB: NT Status Facility = System
            SMB: NT Status Code System Success = STATUS_NOTIFY_ENUM_DIR
    SMB: Header: PID = 0x03DC TID = 0x0005 MID = 0x1659 UID = 0x0072
        SMB: Tree ID      (TID) = 5 (0x5)
        SMB: Process ID   (PID) = 988 (0x3DC)
        SMB: User ID      (UID) = 114 (0x72)
        SMB: Multiplex ID (MID) = 5721 (0x1659)
        SMB: Flags Summary = 136 (0x88)
            SMB: .......0 = Lock & Read and Write & Unlock not supported
            SMB: ......0. = Send No Ack not supported
            SMB: ....1... = Using caseless pathnames
            SMB: ...0.... = No canonicalized pathnames
            SMB: ..0..... = No Opportunistic lock
            SMB: .0...... = No Change Notify
            SMB: 1....... = Server response
        SMB: flags2 Summary = 16385 (0x4001)
            SMB: ...............1 = Understands long filenames
            SMB: ..............0. = Does not understand extended attributes
            SMB: ...0............ = No DFS namespace
            SMB: ..0............. = No paging of IO
            SMB: .1.............. = Using NT status codes
            SMB: 0............... = Using ASCII strings
    SMB: Command = C NT transact
        SMB: Word count = 18
        SMB: Word parameters
        SMB: Total Parameter Count = 0 (0x0)
        SMB: Total Data Count = 0 (0x0)
        SMB: Parameter Count = 0 (0x0)
        SMB: Parameter Displacement = 0 (0x0)
        SMB: Data Count = 0 (0x0)
        SMB: Data Offset = 0 (0x0)
        SMB: Data Displacement (NT) = 0 (0x0)
00000:  00 50 8B F1 34 8F 00 60 08 31 94 AD 08 00 45 10   
00010:  00 73 6B 1F 40 00 40 06 DE 97 AC 1A CC 68 AC 1A   
00020:  CC 20 00 8B 04 F2 3A 61 B4 09 FC 63 99 49 50 18   
00030:  0B 68 7B F9 00 00 00 00 00 47 FF 53 4D 42 A0 0C   
00040:  01 00 00 88 01 40 00 00 00 00 00 00 00 00 00 00   
00050:  00 00 05 00 DC 03 72 00 59 16 12 00 00 00 00 00  
00060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   
00070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  
00080:  00      
				

Para utilizar um depurador para ver o ASP recebido do redireccionador que diz respeito à notificação de alteração enviada pelo servidor SMB, defina pontos de interrupção seguintes.
bp KERNEL32!ReadDirectoryChangesW
bp asp!CASPDirMonitorEntry__ActOnNotification
				

Em seguida, quando premir o ponto de interrupção ActOnNotification, observe o primeiro e segundo parâmetros. O primeiro parâmetro é o estado que o redireccionador está a fornecer para o ASP para alterar notificação. O segundo parâmetro é o número de bytes escritos.
0:008> g
Breakpoint 0 hit
eax=749f1db8 ebx=77db80bc ecx=017d3eb0 edx=74a30908 esi=017d3eb0 edi=00000000
eip=749fbe09 esp=0269feec ebp=0269ff4c iopl=0         nv up ei pl zr na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00000246
asp!CASPDirMonitorEntry__ActOnNotification:
749fbe09 55               push    ebp
0:032> kv
ChildEBP RetAddr  Args to Child              
0269fee8 6d704302 0000003b 00000000 77e82ef1 asp!CASPDirMonitorEntry__ActOnNotification (FPO: [Non-Fpo])
0269ff4c 6d70875d 017d3eb0 00000000 0000003b ISATQ!CDirMonitor__DirMonitorCompletionFunction+0xad (FPO: [Non-Fpo])
0269ff80 6d708a25 0000003b 00000000 017d3ed0 ISATQ!AtqpProcessContext+0x262 (FPO: [Non-Fpo])
0269ffb4 77e837cd 00000000 6d708735 00f6fc38 ISATQ!AtqPoolThread+0x1a8 (FPO: [EBP 0x0269ffec] [1,4,4])
0269ffec 00000000 6d70887d 00000000 00000000 KERNEL32!TlsSetValue+0xf0 (FPO: [Non-Fpo])
0:032> ?3b
Evaluate expression: 59 = 0000003b
0:032> * ERROR_UNEXP_NET_ERR              59L
0:032> *dwStatus = 0x3b (59) dwBytesWritten = 0 (none)
0:032> *so, apparently the status that it returned is something the RDR considers an error
				

ISATQ e ASP considerar o limite para que item deve é limpa a partir da cache de códigos de estado diferente do redireccionador. ASP exige que o estado seja com êxito e o número de bytes de ser 0 antes de que irá limpar todo o directório de ficheiros colocados em cache. Esta é uma vez que que iria requerem a esvaziar global.asa, o que resultaria na terminação de todas as sessões, e reiniciará a aplicação. ISATQ não como restrito que diz respeito à HTM em cache páginas.

Referências

hiperligações CIFS :

Sistema de ficheiros Internet comum
http://samba.org/cifs/

Implementar o sistema de ficheiros Internet comum CIFS-
http://www.ubiqx.org/cifs/

Paul Leach e Dan Perry, CIFS: um sistema de ficheiros Internet comum, no Microsoft Developer Interactive, Novembro de 1996
http://www.microsoft.com/mind/1196/cifs.htm

Paul j. Leach e Dilip C. Naik, um sistema de ficheiros Internet comum (CIFS/1.0) protocolo, preliminar rascunho, 13 de Março de 1997
http://www.ubiqx.org/cifs/rfc-draft/draft-leach-cifs-v1-spec-02.html

Paul j. Leach e Dilip C. Naik, um sistema de ficheiros Internet comum (CIFS/1.0) protocolo, preliminar rascunho, 19 de Dezembro de 1997
http://us1.samba.org/samba/ftp/specs/draft-leach-cifs-v1-spec-01.txt
Consulte 4.3.7, "NT_TRANSACT_NOTIFY_CHANGE: pedido de notificação de alteração"

Directório de ftp da Microsoft CIFS
ftp://ftp.microsoft.com/developr/drg/CIFS/

Comuns Internet File System (CIFS) WG [grupo de trabalho] recursos
ftp://ftp.microsoft.com/developr/drg/CIFS/cifs.html

Para obter informações adicionais, clique nos números de artigo existentes abaixo para visualizar os artigos na Microsoft Knowledge Base:
199072CIFS ou públicas informações de SMB no sistema de ficheiros Internet comum
hiperligações de SAMBA

Páginas da Web SAMBA:
http://us6.samba.org/samba/samba.html

Lista de fornecedores Samba
http://us6.samba.org/samba/vendors/

Propriedades

Artigo: 303802 - Última revisão: 15 de março de 2006 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Information Server 4.0
Palavras-chave: 
kbmt kbhowto KB303802 KbMtpt
Traduçã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: 303802

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com