2009-02-05 9 views
5

Est-il possible de spécifier une chaîne de connexion relative pour un magasin XML AzMan?chaîne de connexion relative au magasin XML AzMan lors de l'utilisation bloc d'application de sécurité

Ma chaîne de connexion actuelle est connectionString="msxml://c:/azman.xml" mais j'ai vraiment besoin de faire ce relatif afin que les autres développeurs et les constructions automatisées puissent obtenir le dernier magasin d'autorisations.

La documentation MS semble indiquer que connectionString="msxml://azman.xml" devrait fonctionner mais qu'une erreur The request is not supported se produit.

EDIT: Je compris que le fait que je utilise AzMan par la sécurité des applications Enterprise Library Block était importante à la question.

Répondre

6

Il est possible de saisir le jeton {} currentPath dans la chaîne de connexion utilisée par le bloc d'application de sécurité.

Cela m'a donné le comportement que je cherchais, ce qui permet le fichier AzMan.xml à accéder à partir avec le dossier de l'application.

La chaîne de connexion J'utilise est:

<authorizationProviders> 
    <add storeLocation="msxml://{currentPath}/azman.xml" 
    application="My_Application" scope="" auditIdentifierPrefix="AzMan Authorization Provider" 
    type="Microsoft.Practices.EnterpriseLibrary.Security.AzMan.AzManAuthorizationProvider, Microsoft.Practices.EnterpriseLibrary.Security.AzMan, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
    name="AzMan Provider" /> 
</authorizationProviders> 
+0

Lorsque j'utilise cette technique, dans une application Web, currentPath est évalué comme "c: \ windows \ system32 \ inetsrv" plutôt que comme application. annuaire. Comment l'obtenir pour mapper vers le répertoire de l'application? –

+2

L'utilisation de {baseDirectory} a fonctionné pour moi, permettant de trouver le fichier dans le répertoire de l'application Web. –

5

Ajout du ~ rendra par rapport à l'application

<add name="AuthorizationServices" connectionString="msxml://~/App_Data/AzMan.xml"/> 
0

Si vous utilisez {} currentPath, assurez-vous de votre répertoire courant est réglé correctement avant de faire l'appel « AuthorizationFactory.GetAuthorizationProvider ». J'utilise également le bloc d'application de sécurité de la bibliothèque d'entreprise. Ex. My.Computer.FileSystem.CurrentDirectory = HttpContext.Current.Request.PhysicalApplicationPath