web-dev-qa-db-fra.com

Comment spécifier l'emplacement racine (/) dans web.config?

Comment spécifier l'emplacement root dans web.config pour permettre aux utilisateurs non authentifiés d'y accéder?

L'emplacement racine est servi par default.aspx, mais normalement les utilisateurs ne voient pas default.aspx, ils ne voient que http://mysite.com/

Donc j'ai ajouté 

  <location path="~/default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

Ce qui fonctionne si l'utilisateur clique sur mysite.com/default.aspx, mais si l'utilisateur clique sur mysite.com/ - il est toujours redirigé vers la page de connexion.

J'ai essayé <location path="~"> (ne permet pas) et aussi <location path="~/">, <location path=""> (le site échoue complètement) et je ne pouvais pas le faire fonctionner.

Des idées?

46
Michael

Essaye celui-là:

<system.web>
    <urlMappings enabled="true">
        <add url="~/" mappedUrl="~/default.aspx" />
    </urlMappings>
    <authorization>
        <allow roles="admin"/>
        <deny users="*" />
    </authorization>
</system.web>
<location path="Default.aspx">
    <system.web>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
</location>
35
Alexey Smolyakov

seule utilisation 

<location path=".">
<system.web>
  <authorization>
    <allow users="*"/>
  </authorization>
</system.web>

ou n'écrivez pas le chemin d'accès, car le chemin d'accès par défaut est root (.)

5
mina morsali

Vous utilisez probablement un numéro d'authentification de formulaire? 

<authentication mode="Forms">
   <forms loginUrl="~/Default.aspx" />
</authentication>

Cela résoudra votre problème. Une alternative est:

  <location path="~/Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
2
Demian Flavius

Vous pouvez atteindre par 2 méthode

Méthode 1:

Vous pouvez définir le chemin de redirection vers http://monsite.com/default.aspx dans IIS si un utilisateur accède directement à votre site. Dans IIS7, vous pouvez le faire en cliquant sur Document par défaut. Ici, j'ai joint l'image pour votre référence

IIS7 setting to add your default page redirection

Méthode 2

Vous pouvez passer par cette adresse URL Appartenance à ASp.NET pour définir vos paramètres de configuration Web.

Faites-moi savoir si vous avez besoin de plus de détails à ce sujet.

2
Chirag Babaria

Dans le passé, nous avions l'habitude de créer un dossier pour toutes les fonctionnalités nécessitant une connexion et de définir l'authentification requise pour ce dossier. Tous les aspx vont dans ce dossier. La racine du site reste ouverte. 

2
b0rg

Si vous souhaitez uniquement laisser les utilisateurs non authentifiés accéder à default.aspx vous pouvez utiliser 

  <location path="Default.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

avant <system.web> et définissez cette page comme page par défaut sur votre serveur Web.
Dans Visual Studio, vous pouvez sélectionner la page et "Définir comme page de démarrage".

Si vous souhaitez autoriser l'accès à tous les fichiers de la racine, vous devez créer des dossiers dans lesquels vous placerez vos pages auxquelles les utilisateurs authentifiés doivent accéder.

Vous pouvez créer un dossier Secure où vous pouvez placer toutes vos pages protégées et modifier votre fichier web.config de la manière suivante:

  <location path="Secure">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>

enlever 

    <authorization>
        <deny users="?"/>
    </authorization>
1
LeftyX

Pour spécifier le répertoire racine, vous devez le définir en dehors du bloc d’emplacement.

<configuration> 
  <system.web>
    <authorization>
      <allow users=“*“/>
    </authorization>
  </system.web>
</configuration>

puis sécurisez votre autre dossier à l'aide du bloc d'emplacement

<location path=“AccessDenied.aspx“>
    <system.web>
        <authorization>
            <deny users=“?“/>
        </authorization>
    </system.web>
</location>
0
Wasa

Utilisez ceci :

<location path="Default.aspx">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>
<location path="~">
  <system.web>
    <authorization>
      <allow users="*"/>
    </authorization>
  </system.web>
</location>

Ça marche pour moi.

0
SeyoS

Merk avait raison! 

J'ai utilisé 

<location path="">
            <system.webServer>
                <httpRedirect enabled="true" destination="http://www.newpathdestination.com" exactDestination="true" httpResponseStatus="Permanent" />
            </system.webServer>
        </location>

sous Windows netserver (ne pas demander), en veillant à ne rien mettre entre les guillemets pour le chemin d’emplacement. Redirige une demande de l'ancienne page d'accueil vers la nouvelle page d'accueil. 

0
David P