2009-02-16 5 views
0

J'ai un programme .Net qui, comme l'une de ses fonctions, prend un fichier à partir d'un répertoire spécifié par l'utilisateur et le place dans un autre répertoire spécial, spécifié via UNC (qui peut ou non être local). Je n'ouvre aucun de ces fichiers dans cette partie du code.Programme termine sur le déplacement de fichier

Il y a ce bogue bizarre que je vois où, sur une machine virtuelle Windows Server 2003 SP2, ce programme exécute de manière aléatoire un arrêt brutal pendant le déplacement vers un dossier local. Cela se termine juste. Aucune exception, aucune journalisation, et il ne semble pas arriver à un moment particulier. Je ne peux pas reproduire ce problème sur ma machine de développement, et cela ne semble se produire que pendant la copie d'un type particulier de fichier d'environ un mégaoctet. Il existe d'autres formats copiés dans différents répertoires en utilisant un code très similaire, tous plus petits, et ils fonctionnent bien. Pourquoi un programme Windows .Net ferait-il un hard avort comme celui-ci?

Que puis-je faire pour le réparer?

+0

Donc, il n'y a rien dans le journal des événements? Hmmm. Problème matériel? – jdigital

+0

Le dossier local de destination est spécifié à l'aide d'UNC? Peut-il être spécifié en utilisant un chemin normal, et a-t-il le même problème? Quel logiciel Virtual Machine utilisez-vous pour héberger la machine virtuelle? –

Répondre

0

Je suppose qu'une erreur de réseau puisque vous avez mentionné "spécifié via UNC (qui peut être ou ne pas être local)".

Je modifierais le programme pour ajouter la journalisation pour l'opération de copie de fichier, si c'est une option.

Avez-vous essayé de faire un "netstat" pendant que vous essayez de copier? Cela peut vous indiquer si un port de pare-feu est peut-être bloqué.

+0

L'échec du réseau est une possibilité, bien que le dossier soit supposé local. Serait-ce des permissions de dossier si cela fonctionne 99% du temps, cependant? – Merus

+0

Correct, si cela fonctionne 99% du temps je ne devinerais pas les autorisations de dossier pour être la cause. Ajoutez de la journalisation pour aider à diagnostiquer les problèmes de réseau. –

0

L'environnement d'exécution .NET contient fail fast et arrête l'application sans avertissement supplémentaire sur les débordements de pile. Cependant, cela devrait générer une entrée dans le journal des événements du serveur. Utilisez-vous un type de récursion ou d'allocation de grands tableaux, etc. dans votre code, qui pourrait provoquer un débordement de pile?

0

Je voudrais changer une ligne. Que se passe-t-il si le fichier est sauvegardé localement? Echoue-t-il toujours dans cette image? Pouvez-vous copier et coller cette portion de code dans votre question?

0

avez-vous vérifié les journaux des événements? Y a-t-il un programme anti-virus avec ça? Est-ce que ça devient DAP?

Questions connexes