De informatie in dit artikel is van toepassing op:
- Microsoft Internet Explorer 3.0
- Microsoft Internet Explorer 4.0 128-bits editie
- Microsoft Internet Explorer 4.01 Service Pack 2
- Microsoft Windows Internet Services (WinInet)
Dit artikel is eerder gepubliceerd onder NL172712
Samenvatting
De functies van WinInet FTP kennen enkele beperkingen waarvan ontwikkelaars op de hoogte dienen te zijn. Voordat een ontwikkelaar besluit op WinInet te vertrouwen voor de FTP-functionaliteit van een toepassing, kan de ontwikkelaar het beste eerst nagaan of de API's op de juiste manier werken met alle vereiste FTP-servers. In dit artikel worden de beperkingen van de FTP-functies van WinInet beschreven.
Om te beginnen, implementeert WinInet niet rechtstreeks alle functionaliteit die beschikbaar is via het FTP-protocol. De meeste vaak voorkomende activiteiten zijn beschikbaar via rechtstreekse API-aanroepen. Hierbij kan worden gedacht aan het uploaden, downloaden en verwijderen van bestanden, het wijzigen van de naam van bestanden en het weergeven van de inhoud van mappen. Er zijn echter een aantal andere FTP-opdrachten die niet rechtstreeks worden geïmplementeerd, zoals ACCOUNT, QUOTE, APPEND, BLOCK en ALLOCATE. Vanaf Internet Explorer versie 5.0 is er een nieuwe API voor WinInet beschikbaar. Deze heet FtpCommand en biedt u de mogelijkheid functioneel uw eigen QUOTE-opdracht te implementeren en een bepaalde opdracht naar de server te sturen. In eerdere versies van WinInet bestond de mogelijkheid niet om bepaalde opdrachten naar de FTP-server te sturen.
Verder kan WinInet problemen hebben met sommige FTP-servers. Het ontwerp van het FTP-protocol is gebaseerd op de veronderstelling dat de uitvoer wordt bekeken, en wel door een gebruiker die de antwoordcode en -tekst kan interpreteren. De FTP-functie van WinInet probeert het antwoord te parseren en interpreteren. Als een server een niet-standaard antwoord retourneert aan een client, is het mogelijk dat WinInet niet juist functioneert.
Bovendien is voor sommige servers een reeks opdrachten vereist die niet compatibel is met WinInet. Zo is voor sommige servers direct bij het aanmelden een account-opdracht vereist. Met de FtpCommand-functie is het mogelijk een ACCOUNT-opdracht op te geven nadat u zich reeds hebt aangemeld. De in WinInet geïmplementeerde FTP-aanmeldingsvolgorde is echter niet flexibel genoeg om een ACCOUNT-opdracht op te geven als deze onmiddellijk door de server wordt vereist.
In sommige Microsoft Foundation Classes (MFC) worden de basisfuncties van WinInet ingesloten. Als een van de hierboven vermelde problemen voorkomt in een niet-MFC-toepassing, is het meer dan waarschijnlijk dat het probleem wordt overgenomen door de WinInet-klassen van MFC. In deze klassen wordt geen oplossing geboden voor problemen die bestaan in de basisfunctie van de API. Ook is het zo dat wanneer u een probleem ondervindt met de WinInet-klassen van MFC, het soms de moeite waard kan zijn de basisaanroepen van de API te proberen. Mogelijk bieden deze een oplossing.Meer informatie
Hierna volgen enkele bekende probleemgevallen. Dit is geen volledige lijst en het is mogelijk dat ontwikkelaars extra beperkingen bemerken die hier niet zijn vermeld.
FTP-servers onder VMS: het is mogelijk dat
WinInet FTP-functies niet werken op sommige FTP-servers waarop het VMS-besturingssysteem wordt uitgevoerd. Zo kunnen de
FTP-functies mislukken met een fout of kan de gegevensstructuur waarin bestandsinformatie wordt geretourneerd, leeg zijn of ongeldige gegevens bevatten.
Raadpleeg het volgende Microsoft Knowledge Base-artikel voor meer informatie:
168492PRB: FTP WinInet APIs Report Error 12003
Dit probleem treedt op wanneer de tekst die door de FTP-server wordt geretourneerd, een indeling heeft die WinInet niet juist kan parseren. U kunt dit probleem omzeilen door de
FtpCommand-functie te gebruiken en een
LIST-opdracht naar de server te sturen. U kunt dan de overzichtsresultaten direct weergeven in uw toepassing of zelf de geretourneerde gegevens parseren.
Firewalls: de FTP-API's van WinInet zijn zodanig ontworpen dat ze kunnen worden gebruikt met FTP Gateway. De API-functionaliteit kan ernstig worden aangetast wanneer gebruik wordt gemaakt van een proxy van het type CERN (FtpPutFile, FtpGetFile, enzovoort, werken mogelijk niet juist). Met de
InternetOpenUrl-functie kan mogelijk een beperkte FTP-functionaliteit worden bereikt via een CERN-proxy. Ook kunnen verdere problemen optreden als voor een proxy een andere gebruikersnaam en een ander wachtwoord vereist zijn dan de gebruikersnaam en het wachtwoord die voor de FTP-doelserver vereist zijn.
Voor meer informatie over het gebruik van FTP via een CERN-proxy raadpleegt u de volgende artikelen in de Microsoft Knowledge Base:
166961HOWTO: FTP with CERN-Based Proxy Using WinInet API
216214SAMPLE: FTP with CERN-Based Password Protected Proxy
In het voorbeeld FtpJr in de Internet Client SDK worden vele FTP-API's van WinInet beschreven. Ontwikkelaars van FTP-toepassingen met WinInet kunnen dit voorbeeld downloaden van de volgende locatie: