2009-05-31 7 views
0

J'ai un problème qui se produit uniquement lorsque j'exécute mon application à partir d'IIS. Je tente de FTP à partir de mon application ASP.NET à un site externe.FTP à partir d'une application ASP.NET sur IIS7 échoue

Je peux FTP à partir du serveur en général, mais pas de mon application. Ma demande expire.

Le propriétaire de mon site Web est maintenant défini sur l'utilisateur IIS_IUSRS avec un contrôle total.

Quelqu'un at-il une idée de ce qui pourrait m'empêcher de réussir?

Toute aide sera extrêmement appréciée.

Ma date limite est dans les 12 heures et je suis Royaly vissé ...

Répondre

0

Une solution rapide peut établirons l'utilisateur anonyme IIS utilise pour votre compte utilisateur au lieu du compte IUSR (dans IIS). Cela semble être un problème d'autorisation.

Deuxième pari serait d'utiliser un outil comme Wiresharck/Etherreal et vérifier si une connexion au site FTP est faite, et déboguer à partir de là.

+0

Merci pour votre réponse Thies –

0

Je trouvé la solution

Pare-feu Windows et le trafic FTP non sécurisé

pare-feu

Windows peut être configuré à partir de la ligne de commande en utilisant la commande netsh. 2 étapes simples sont nécessaires pour configurer Pare-feu Windows pour autoriser le trafic FTP non sécurisé

1) Ouvrez le port 21 sur le pare-feu

advfirewall netsh firewall ajouter la règle name = "FTP (pas SSL)" action = permettre le protocole = TCP dir = dans localport = 21

2) activer filtre d'application pare-feu pour FTP (aka Stateful FTP) qui sera dynamiquement les ports ouverts pour les connexions de données

netsh advfirewall set StatefulFtp validation globale

I ne sait pas vraiment ce que vient de faire mais il fait l'affaire

+0

FTP utilise un tas de ports lors du transfert de données. Le premier ouvre le canal de communication pour les commandes - alors que, en raison des ports dynamiques utilisés dans FTP, le second surveillera le trafic FTP et ouvrira des ports supplémentaires si nécessaire. Question, pourquoi cela fonctionnait-il pour tout sauf pour votre application? Cela ne fonctionnait-il pas sur la même machine avec laquelle vous avez fait votre test FTP? – Thies

0

Même problème résoudre UsePassive. Peut-être que vous pouvez ajouter le port 20,21 pour FTP sur le pare-feu (Pour moi pas nécessaire).

FtpWebRequest reqFTP; 
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(@"ftp://ftp.example.com/")); 
reqFTP.UseBinary = true; 
reqFTP.Credentials = new NetworkCredential("user", "password"); 
reqFTP.Proxy = null; 
reqFTP.KeepAlive = false; 
reqFTP.UsePassive = true; 
Questions connexes