Amigos me encuentro en serios apuros, les comento... armo la cadena de
conexion en tiempo de ejecucion que la escribo como valor de la etiqueta del
connectionString que inicialemnet esta en Blanco, la escritura se realiza
sin problemas pero la siguiente linea de mi codigo es la de conecion mediate
DAAB la cual lee del .exe.config de la aplicacion, y alli me sale un error
indicandome que el valor del connectionString no puede ser nula o vacia,
cuando verifico el XML veo que si se escribio la cadena correctamente,
cuando realizo el mismo procedimeitno pero espero un poco despues de
escribir el xml con la cadena de coneccion recien conecta. entiendo por ello
que creo que la escritura lo hace pero el sistema operativo no lo actualiza
porque tengo que esperar unos 15 segundo para que lo reconosca
normalmente
Espero que me hayan entendido...mi pregunta resumiendo todo es como puedo
hacer mediante codigo que se actualicen los archivos de un determinado
directorio como si lo haria con F5 desde el Explorador de Windows.
Este es el codigo que utilizo para la escritura del .exe.config
Private Sub EscribeXML(ByVal CadenaConexion As String)
Dim docName As String = String.Empty
docName = ((Assembly.GetEntryAssembly()).GetName()).Name
docName += ".exe.config"
Dim doc As New XmlDocument
Dim node As XmlNode = Nothing
Dim appCfg As New cAppConfig
appCfg.ConfigType = Convert.ToInt32(ConfigFileType.AppConfig)
appCfg.loadConfigDoc(doc)
node = doc.SelectSingleNode("//connectionStrings")
Dim Key As String = "cnn_sigcli_temp"
Dim addElem As XmlElement = CType(node.SelectSingleNode("//add[@name='" +
Key + "']"), XmlElement)
'MessageBox.Show(addElem.GetAttribute("connectionString"), "Antes")
addElem.SetAttribute("connectionString", CadenaConexion)
Call saveConfigDoc(doc, docName)
Variables.vgConexion = Key
End Sub
Private Sub saveConfigDoc(ByVal cfgDoc As XmlDocument, ByVal cfgDocPath As
String)
Try
'Dim Fsw As New FileSystemWatcher(cfgDocPath)
Dim writer As XmlTextWriter = New XmlTextWriter(cfgDocPath, Nothing)
writer.Formatting = Formatting.Indented
cfgDoc.WriteTo(writer)
writer.Flush()
writer.Close()
Return
Catch
Throw
End Try
End Sub
Para formar la cadena de conexion es la siguiente.
Private Sub cmbEmpresa_SelectedIndexChanged(ByVal sender As Object, ByVal e
As System.EventArgs) Handles cmbEmpresa.SelectedIndexChanged
Try
If Me.cmbEmpresa.SelectedIndex <> -1 Then
Dim drvEmpresa As DataRowView
drvEmpresa = CType(Me.cmbEmpresa.DataSource,
DataView).Item(Me.cmbEmpresa.SelectedIndex)
Dim CnString As String = "Data Source=" & drvEmpresa("SG_Data_Source") &
";Initial Catalog=" & drvEmpresa("SG_Database") & ";User ID=" &
drvEmpresa("SG_User") & ";Password=" & drvEmpresa("SG_Clave") & ";"
Call EscribeXML(CnString)
End If
Catch Qex As Exception
MessageBox.Show(Qex.Message, "Seguridad del Sistema - Filtro Combo",
MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Y para Inicializar el sistema y conectarme para jalar mis acceso de usuario:
Dim vMyBaseDatos As Database = DatabaseFactory.CreateDatabase(vgConexion)
Dim ddAcceso As SqlDataReader =
vMyBaseDatos.ExecuteReader("Seguridad.USP_ACCESO_USER", 0, vlUser, Nothing,
Nothing, Nothing)
.
Espero me ayuden.
Leer las respuestas