Retroceder   Foros del Web > Programación para sitios web > .NET

Respuesta
 
Herramientas Desplegado
Antiguo 10-ene-2005, 08:07   #1 (permalink)
Bravenap está en el buen camino
 
Avatar de Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 1.899
Enviar un mensaje por Skype™ a Bravenap
Guardar nuevas claves en web.config

Hola a todos de nuevo.

He estado intentando modificar el archivo de configuración de mi aplicación web insertando nuevas claves o bien modificando las que ya están. La rutina es la siguiente:

Código:
    Private Sub GuardarConfig(ByVal clave As String, ByVal valor As String)
        Dim xd As New XmlDocument
        Dim nombreWebConfig As String = Server.MapPath("../") & "web.config"
        xd.Load(nombreWebConfig)
        Dim Node As XmlElement = CType(xd.DocumentElement.SelectSingleNode( _
                                   "/configuration/appSettings/add[@key=""" & _
                                   clave & """]"), XmlElement)
        If Not Node Is Nothing Then
            'Clave encontrada, añade el valor
            Node.Attributes.GetNamedItem("value").Value = valor
        Else
            'Clave no encontrada, la crea
            Node = xd.CreateElement("add")
            Node.SetAttribute("key", clave)
            Node.SetAttribute("value", valor)

            'Busca el nodo
            Dim Root As XmlNode = xd.DocumentElement.SelectSingleNode("/configuration/appSettings")

            'Añade el nuevo nodo hijo (esta clave)
            If Not Root Is Nothing Then
                Root.AppendChild(Node)
            Else
                Try
                    'El nodo no existía, lo añade antes de crear el hijo
                    Root = xd.DocumentElement.SelectSingleNode("/configuration")
                    Root.AppendChild(xd.CreateElement("appSettings"))
                    Root = xd.DocumentElement.SelectSingleNode("/configuration/appSettings")
                    Root.AppendChild(Node)
                Catch ex As Exception
                    'Fallo al añadir el nodo, envía un error
                    Throw New Exception("Could not set value", ex)
                End Try
            End If
        End If

        'Finalmente, guarda la nueva versión del archivo de configuración
        xd.Save(nombreWebConfig)
    End Sub
La línea en rojo es la que provoca la excepción y es por problemas de permisos:

Cita:
Detalles de la excepción: System.UnauthorizedAccessException: Acceso denegado a la ruta de acceso "c:\inetpub\wwwroot\portalesCIM\web.config".

ASP.NET no está autorizado para obtener acceso al recurso solicitado. Considere la posibilidad de conceder derechos de acceso al recurso para la identidad de solicitud de ASP.NET. Si la aplicación no se va a suplantar, ASP.NET utiliza una identidad de proceso base (normalmente {MACHINE}\ASPNET en IIS 5 o Network Service en IIS 6). Si la aplicación se va a suplantar mediante <identity impersonate="true"/>, la identidad será el usuario anónimo (generalmente IUSR_MACHINENAME) o el usuario solicitado autenticado.

Para conceder a ASP.NET acceso de escritura de un archivo, desde el Explorador, haga clic con el botón secundario en el archivo, elija "Propiedades" y seleccione la ficha Seguridad. Haga clic en "Agregar" para agregar el usuario o grupo adecuado. Resalte la cuenta de ASP.NET y active las casillas según el acceso deseado.
El último párrafo es el que no entiendo muy bien. ¿A qué explorador se refiere? Porque desde el explorador de Windows, las propiedades del web.config no incluyen la ficha seguridad.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Bravenap está desconectado   Responder Citando
Antiguo 10-ene-2005, 08:25   #2 (permalink)
xknown está en el buen camino
 
Avatar de xknown
 
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.249
Hola, no es recomendable que edites el Web.config, en vez de eso utiliza un archivo ini, xml o cualquier tipo de archivo que creas por conveniente.

Aquí tienes algunas razones:
http://www.interact-sw.co.uk/iangblo...5/savingconfig

Aquí tienes un código para escribir archivos de configuración (XML)
http://www.experts-exchange.com/Prog..._20954883.html

Sobre el error que te manda, al explorador que se refiere es al explorador de windows, lo que te dice es que al usuario bajo el que se ejecuta de asp.net le des los permisos necesarios (lectura, escritura o control total) sobre la carpeta que definiste como aplicación, esto se hace en la ficha de seguridad del cuadro de propiedades de dicha carpeta.

Espero que me hayas entendido

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
xknown está desconectado   Responder Citando
Antiguo 10-ene-2005, 08:39   #3 (permalink)
Bravenap está en el buen camino
 
Avatar de Bravenap
 
Fecha de Ingreso: noviembre-2002
Ubicación: Madrid
Mensajes: 1.899
Enviar un mensaje por Skype™ a Bravenap
Gracias xknown por la información.

El código que tenía, en principio funciona bien, porque lo tenía en una aplicación de Windows y no me daba problemas.

Pero para la aplicación ASP.Net es donde tenía los problemas de permisos. En realidad el código sólo se usaría en un panel de control al que sólo se tiene acceso por contraseña y serviría para administrar un sitio.

Como hay muchas cosas que cargo desde el archivo web.config, como una lista de todos los controles que se cargan en cada página del sitio, me resultaba mejor desde el archivo de configuración (una cadena con los nombres de los controles) que tener que recurrir a la base de datos.

Me parece que al final, la mejor opción será darle al SQL.

Gracias de todas formas.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
Bravenap está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 15:35.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93