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:
La línea en rojo es la que provoca la excepción y es por problemas de permisos: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
Cita:
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. 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.
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.