Les utilisateurs non authentifiés peuvent pas voir les images dans le site web
Quand je lance mon site web à travers le mode de débogage dans visual studio tout ce qui ressemble beaucoup et toutes les images de la page s'affichent bien. Mais une fois que j'ai déployer mon site web pour un serveur web IIS7 (doute que les autres versions ne fait aucune différence, mais on ne sait jamais) ensuite, les utilisateurs ne peuvent pas voir les images sur le site jusqu'à ce qu'ils se connectent.
Le site est un site asp.net MVC site et je suis nouveau sur MVC, même si j'ai beaucoup d'expérience avec le asp.net les formulaires. Il semble que seuls les utilisateurs authentifiés sont autorisés à accéder au dossier d'images, et il y a une section autorisation dans mon web.config à dire que seuls les administrateurs peuvent accéder au site, alors comment puis-je faire en sorte que tous les utilisateurs authentifiés ou sinon pouvez afficher les images?
-- Update --
J'ai essayé de mettre dans le bloc de configuration proposée, de tout ce que je peux dire est parfaitement logique, mais il ne semble pas faire une différence. L'exemple ci-dessous a Contenu/Images pour le chemin, mais avant que j'ai essayé tout Contenu, puisque c'est OK pour tout ce qu'il ya à être accessible. J'ai aussi essayé le réglage de la directive allowOverride paramètre à false, ce qui ne semble pas faire une différence.
<location path="Content/Images">
<system.web>
<authorization>
<allow users ="*" />
</authorization>
</system.web>
</location>
--Mise à jour 2--
La chose drôle est que je n'ai même pas voir tout refus explicite entrées dans mon web.config, juste un permettre d'admin, et quand je suis allé dans IIS 7 et utilisé l'INTERFACE utilisateur pour permettre à tous les utilisateurs d'accéder au Contenu du répertoire, il n'a pas pu montrer tout nier est sur la liste. Mais là encore, ce projet fonctionne très bien quand je viens de débogage à partir de mon ordinateur personnel, c'est seulement après que j'ai déployer que j'ai des problèmes...
<authorization>
<allow roles="admin" />
</authorization>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
voir mise à Jour 2.
Mise à jour de ma réponse.
Ajouter des commentaires à ma réponse. Espérons que cela aide.
Comment avez-vous résoudre ce problème? En fait, je veux le contraire, mais ce n'est pas grave 🙂
OriginalL'auteur Peter | 2010-11-07
Vous devez vous connecter pour publier un commentaire.
Dans votre site web.fichier de config, après la
</system.web>
tag, ajoutez les éléments suivantsoù
path="images"
est le nom du dossier contenant vos images/css.Mise à jour:
Si vous êtes en utilisant ASP.NET MVC, je voudrais supprimer l'autorisation de déclaration dans le web.le fichier de configuration et l'utilisation de la
[Authorize]
attribut sur les contrôleurs qui doivent être fermés.Vous pouvez également spécifier les rôles que vous souhaitez accorder l'accès à l'aide
[Authorize("admin")]
.#2 - j'ai Donc essayé votre suggestion pour Autoriser l'utilisation d'un attribut, et il fonctionne aussi loin que les seules permettant à des utilisateurs autorisés à accéder à ces pages, j'ai aussi retiré l'autorisation d'entrée à partir du web.config... mais rien n'a changé et les utilisateurs ne peuvent TOUJOURS pas accéder à des images sans ouvrir de session. C'est déroutant, je ne peux pas savoir ce qui le bloque.
êtes-vous à l'aide d'un
BaseController
que tous les contrôleurs de hériter du et est-il un[Authorize]
attribut?De ce fait le travail de la mine
Wow! Merci beaucoup. J'ai eu ce problème dans les locaux de débogage pendant des années! C'était OK sur le serveur de publication. Maintenant, c'est ok dans les deux situations.
OriginalL'auteur Omar
Par défaut, la configuration que vous définissez dans un site Web.fichier de config, s'applique à tous les sous-répertoire de son dossier qui le contient. Si vous avez un site Web.config à la racine de l'application, la configuration de propagation pour chaque sous-répertoire, y compris ceux où vous avez des images et feuilles de style Css. Donc, si vous avez dans votre racine Web.config une règle comme celle-ci:
les utilisateurs anonymes ne seront pas en mesure d'accéder aux ressources nécessaires à l'affichage de la page comme vous l'attendez.
Pour résoudre ce problème, vous devez inclure un autre site Web.config dans chaque sous-répertoire a présentation des ressources, et d'appliquer les règles que vous souhaitez remplacer. Dans votre cas, cela devrait faire le travail:
Si vous utilisez des Thèmes de, la place un site Web unique.fichier de config dans le dossier du thème.
OriginalL'auteur eXe
Viens de tomber sur le même problème. Nous avons remarqué sur notre page de Connexion. Le CSS et les images n'étaient pas de chargement (ils étaient sous le répertoire de contenu). L'ajout d'IUSR le dossier avec les droits de Lecture fixe pour nous.
OriginalL'auteur Josh
Une vieille question, mais je suis tombé sur le même problème et trouvé la réponse.
J'avais créé un nouveau dossier pour les Membres de pages que j'ai voulu connecté aux utilisateurs d'avoir accès à, mais les images ne s'affichent pas dans les!
Il s'avère que, peu importe ce que j'ai essayé je n'arrivais pas à définir un chemin d'accès relatif à la des images dans le dossier Membres.
Le problème était le code html de l'image (aussi loin que je pouvais dire de toute façon, corrigez-moi si je me trompe).
Je l'ai échangé pour un
asp:image
avec un chemin relatif, et maintenant il fonctionne très bien.Mon nouveau code:
asp:image runat="server" id="Logo" ImageUrl="~/Images/logo.jpg"
Notez le ' ~/', qui ne fonctionne pas pour moi avec
J'ai essayé:
img src="../Images/logo.jpg"
,img src="~/Images/logo.jpg"
,img src="/Images/logo.jpg"
, etc. en vain.Espère que cette réponse aider quelqu'un à résoudre ce problème plus rapidement à l'avenir.
OriginalL'auteur Alperon
Essayer de la navigation sur le fichier image directement et voir si cela vient pour un utilisateur anonyme. Dans IIS 7, il ya une façon dont vous pouvez autoriser les utilisateurs anonymes directement à partir de votre INTERFACE utilisateur [qui permettraient de créer le site web.config si il n'existe pas].
Dossier -> .NET Règles d'Autorisation -> Ajouter une Règle d'autorisation
Quel est le code dans les Journaux IIS? Essayer d'obtenir un suivi des demandes ayant Échoué journaux et de vérifier si vous obtenez de plomb. Aussi, permettez-moi de savoir ce qui se passe si vous créer un simple fichier htm et essayez de parcourir directement à partir de l'INTERFACE utilisateur à l'aide de droite cliquez sur parcourir? Le htm de travail si vous essayez directement?
Une chose de plus... si toutes les étapes précédentes échouent, essayez de créer un nouveau fichier de test de sécurité.aspx, et de suivre ce post pour le code. Partager la sortie avec moi [ou de les analyser vous-même] pour trouver de l'utilisateur qui est actuellement actif pour accéder à votre contenu. dotnetscraps.com/dotnetscraps/post/...
OriginalL'auteur Rahul Soni
Êtes-vous à l'aide de l'adhésion cadre. Je soupçonne que vous avez configuré vos paramètres d'autorisation dans le web.config et votre dossier d'images est seulement de permettre autorisées. Cela peut être changer facilement via le web.config. Il suffit de retirer le nom du dossier de votre autorisée section et cela devrait résoudre le problème.
Pour votre référence, ce devrait être dans la section web.config si vous utilisez l'adhésion cadre :
OriginalL'auteur Naveen
Nous avons rencontré le même problème dans notre projet et trouvé une solution, même si nous ne sommes pas sûr de savoir les raisons de ce comportement.
Nous avons eu un scénario similaire, avec un dossier contenant toutes nos images png. Notre marketing collègue voulait renommer certains d'entre eux, afin de le rendre plus facile pour elle, nous avons partagé (ce peut être la clé) ce dossier, l'octroi de lecture/écriture des droits de l'.
À partir de ce point, les images ont commencé à se comporter comme vous le décrivez, en demandant l'autorisation pour être accessible. Aucun utilisateur non autorisé ne puisse les voir.
Nous nous sommes rendu compte que le problème était lié à partager le dossier parce qu'il a commencé à ce moment-là. Sinon, nous ne voyons pas de relation entre ASP.NET MVP d'autorisation de l'utilisateur/login et le disque dur de l'utilisateur des droits de l'. On aurait pu s'attendre à un IO Exception ou quelque chose de similaire, mais pas ce comportement.
Après vérification du dossier, et en les comparant avec d'autres dossiers, nous nous sommes rendu compte que, après le partage, les autorisations sur le dossier avait légèrement changé. Principalement, ils n'ont pas hériter de son dossier parent plus et certains des autorisations telles que la PROPRIÉTAIRE CRÉATEUR et NOM_MACHINE\Users avait disparu (bien que IUSR et de l'application utilisateur de la piscine étaient toujours là).
Donc, nous l'avons renommé le dossier créé un nouveau avec le même nom, et copié le contenu de l'ancien dossier vers le nouveau. Le nouveau dossier avait les autorisations héritées de ses parents et tout a commencé à travailler à nouveau parfaitement.
Il a résolu notre problème, mais nous ne sommes pas encore sûr de savoir pourquoi tout cela s'est passé de cette façon.
Ce qui concerne
OriginalL'auteur Jaime