2008-10-15 4 views
0

Disons que j'ai un site où une fois que l'utilisateur sélectionne quelques options, les suivantes (devrait) se produire:Comment déplacer des fichiers d'une machine à une autre en utilisant ASP.NET?

  • Grabs fichiers (dans un répertoire) hors de la machine locale - fonctionne bien jusqu'à présent
  • les déplace vers un serveur distant - c'est là où je besoin d'aide

Détails:

  • Le serveur distant se trouve via le chemin UNC (\ servername \ xyz)
  • -je avoir accès au nom d'utilisateur/mot de passe pour accéder à ce chemin UNC, mais puisque nous sommes sur un domaine différent et je ne contrôle pas ses décisions, je ne peux pas avoir un seul utilisateur disposant des autorisations dans les deux domaines.

Comment puis-je aller sur la configuration de mon site pour le faire? Si j'usurper l'identité, alors je pourrais perdre des autorisations pour récupérer des fichiers sur la machine locale ...

Note: J'ai aussi accès FTP au serveur distant. S'il y a une bonne API FTP que je pourrais utiliser, ça marcherait aussi, mais je ne veux pas devoir parcourir chaque fichier.

Oh, c'est 1.1 .NET ainsi.


C'est une suggestion sur une question connexe: Need to Impersonate user forAccessing Network resource, Asp.Net Account

Répondre

2

Je l'ai fait ce domaine croix avant. Tout ce dont vous avez besoin est que le nom d'utilisateur et le mot de passe soient les mêmes et cela fonctionnera, même s'ils se trouvent dans des domaines différents. La chose à vous assurer est que votre application .NET est en cours d'exécution en tant que cet utilisateur.

Par exemple:

  • Dans XYZ de domaine ont un utilisateur "filesynch" avec un mot de passe "pass"
  • Dans le domaine PDQ ont un utilisateur "filesynch" avec un mot de passe "pass"
  • Marque que l'utilisateur PDQ \ filesynch a accès à partager sur la machine dans le domaine PDQ
  • Exécuter l'application sur une machine dans le domaine XYZ comme XYZ \ filesynch utilisateur
  • Copier les fichiers sur le réseau
1

Cela pourrait se faire soit avec le unc ou ftp. Pour le plus tôt (unc), vous pouvez utiliser File.Copy (source, target) - pour ce dernier, vous pouvez utiliser quelques techniques. Si vous stockez ce que l'utilisateur voulait de la machine sur le site distant, vous pouvez utiliser un webclient (System.Net.WebClient) pour télécharger les fichiers via une URL accessible (ex: fichier tour naviguant dans IIS).

Si vous pouvez utiliser .NET 2.0 vous avez de meilleures options avec des objets plus fiables (ex: FtpRequest) - est-il un Reson pourquoi vous ne pouvez pas utiliser .NET 2.0?

Questions connexes