2010-05-20 6 views
1

J'ai une erreur bizarre qui est liée à un post précédent. Je vérifie si un fichier existe avant le téléchargement. Cela fonctionne pour les fichiers PDF, mais pas pour tout autre type de document.Erreur ASP.NET MVC FileNotFoundException

Voici mon action de contrôleur et le chemin typique pour un fichier PDF et PowerPoint, le PowerPoint ne fonctionne pas, le File.Exists renvoie toujours false. Les deux fichiers existent physiquement. C'est assez déroutant, car il en résulte un FileNotFoundException pour les non-PDF.

/Documents//FID//TestDoc//27a835a5-bf70-4599-8606-6af64b33945d/FIDClasses.pdf

~/Documents // // pptest // FID ce36e7a0-14de-41f3- 8eb7-0d543c7146fe/PPTTEST.ppt

la plaisanterie est que copier et coller le chemin du fichier dans l'explorateur mène au fichier, donc ce qui pourrait être le problème?

[UnitOfWork] 
public ActionResult Download(int id) 
{ 
    Document doc = _documentRepository.GetById(id); 

    if (doc != null) 
    { 
     if (System.IO.File.Exists(Server.MapPath(doc.filepath))) 
     { 
      _downloadService.AddDownloadsForDocument(doc.document_id, _UserService.CurrentUser().user_id); 
      return File(doc.filepath, doc.mimetype, doc.title); 
     } 
    } 
    return RedirectToAction("Index"); 
} 
+0

Je suppose que vous avez cassé la ligne "if System.IO ...", pour vérifier que ce n'est pas doc qui est nul alors qu'il ne devrait pas être ... – NibblyPig

+0

merci, pour votre réponse, oui comme je l'ai dit, le filepath est retourné dans l'erreur et j'ai copié et collé ce chemin dans Windows Explorer et le fichier est là. le chemin de fichier est une propriété de doc, donc doc peut être nul. – bongoo

Répondre

0

Vérifiez les autorisations sur le fichier PPT et le répertoire, vérifier le fichier ne informations pas une « zone » attachée à elle parce que vous l'avez téléchargé d'ailleurs.

+0

Merci, ive a regardé les autorisations et il semble bien, la chose étrange est que cela arrive à tous les fichiers en dehors des fichiers PDF. – bongoo