2016-10-20 1 views
0

Pour des raisons hors de mon contrôle, il m'a été demandé de rendre une série d'images sur une page Web (sorte de galerie) basée sur une structure de répertoire utilisant un chemin UNC. Vous remarquerez que j'utilise des chemins relatifs pendant que je travaille dessus mais que je déploierai le site en utilisant des conventions UNC.ASP.NET incapable d'afficher l'image

J'ai créé la vue partielle suivante pour rendre les images, que je peux mettre en forme plus tard.

@model System.Collections.Generic.List<string> 

@foreach (var image in Model) 
{ 
    <div id="ptImage"> 
     <img src="@image" alt="@Path.GetFileName(image)"/> 
    </div> 
} 

@image représente au-dessus du chemin absolu à l'image devant être rendu.

Les chemins affichés dans la vue source de la page sont ce que je pense que je devrais attendre en arrière et vraiment définir localement l'emplacement de l'image. Lorsque vous accédez à des images via un chemin relatif, est-ce ce que d'autres attendent? Lorsque la vue partielle est chargée, je ne vois que le texte alternatif de l'image et non l'image elle-même. Un regard sur le journal IIS express me dit ce qui suit:

http://localhost:1348/TestGallery/ 404 0 2 6, This resource me conduisent à comprendre que 404 0 2 x semble indiquer que la ressource est introuvable.

Avec ce qui est vraiment le chemin vers le fichier, qu'attend IIS comme une entrée valide pour localiser la ressource? Je ne suis pas sûr de savoir comment formuler la question pour effectuer une autre recherche.

+0

Je pense qu'il est un problème d'autorisation. Essayez d'utiliser le chemin d'accès réel dans l'image tag comme

Répondre

0

Les chemins src dans les balises img doivent être des URL de site Web et non des emplacements de fichiers réels sur le disque. Votre application Web doit traduire les URL pour récupérer l'image à partir de l'emplacement approprié.

Une solution possible:

  • Faire une entrée personnalisée dans votre application de RouteConfig.cs pour traiter tous les articles sur un certain chemin d'URL dynamique. (Dans cet exemple, il est un contrôleur distinct.)

    routes.MapRoute(
        name: "Images", 
        url: "image/{*querypath}", 
        new { controller = "Image", action = "Retrieve" } 
        ); 
    
  • Dans le code qui gère chemin de requête arbitraire, traduire l'URL relative (en querypath ci-dessus) au chemin UNC que vous cherchez et servir l'image .

    return File(UncRootPath + querypath, "image/png");