2009-02-05 4 views
5

¿Es posible especificar una cadena de conexión relativa para un almacén XML de AzMan?Cadena de conexión relativa al almacén XML de AzMan al usar el bloque de aplicación de seguridad

Mi cadena de conexión actual es connectionString="msxml://c:/azman.xml", pero realmente necesito hacer que sea relativa para que otros desarrolladores y compilaciones automáticas puedan obtener el último almacén de autorizaciones.

La documentación de MS parece sugerir que connectionString="msxml://azman.xml" debería funcionar pero arroja un error The request is not supported.

EDIT: me di cuenta de que el hecho de que estoy usando AzMan a través del Bloque de aplicaciones de seguridad de la biblioteca empresarial era importante para la pregunta.

Respuesta

6

Es posible introducir el token {} currentPath en la cadena de conexión utilizado por el bloque de aplicación de seguridad.

Esto me dio el comportamiento que estaba buscando, permitiendo acceder al archivo AzMan.xml desde la carpeta de la aplicación.

La cadena de conexión que estoy usando es:

<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

Cuando uso esta técnica, en una aplicación web, currentPath se evalúa como "c: \ windows \ system32 \ inetsrv" en lugar de la aplicación directorio. ¿Cómo hago para que se correlacione con el directorio de la aplicación? –

+2

El uso de {baseDirectory} funcionó para mí, permitiendo que el archivo se encuentre en el directorio de la aplicación web. –

5

Adición del ~ lo hará en relación con la aplicación

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

Si utiliza {} currentPath, asegúrese de que su directorio actual está configurado correctamente antes de hacer la llamada "AuthorizationFactory.GetAuthorizationProvider". También estoy usando el Bloque de aplicaciones de seguridad de la biblioteca empresarial. Ej. My.Computer.FileSystem.CurrentDirectory = HttpContext.Current.Request.PhysicalApplicationPath

Cuestiones relacionadas