none
Carregando (Web Config) em Windows Application RRS feed

  • Pergunta

  • Bom dia, por padrão o Windows Forms tem o arquivo "app.config" onde podem ser inseridas quaisquer configurações para o carregamento.

    Porém tenho o seguinte: 2 programas, um ASP.net (VB) e outro VB.net. Preciso que ambos utilizem o mesmo arquivo de configurações: web.config.

    O aplicativo ASP.net já carrega o arquivo "web.config" na raiz do site por padrão. Veja o modelo:

    <?xml version="1.0"?>
    <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
      <appSettings>
        <add key="import_checkpos" value="23"/>
        <add key="import_checkvalue" value="0"/>
        <add key="import_datepos" value="11"/>
        <add key="import_timepos" value="19"/>
        <add key="import_timeseconds" value="false"/>
        <add key="import_codepos" value="24"/>
        <add key="import_codelen" value="11"/>
        <add key="uploadpath" value="D:\CentralWeb\DataBase\Upload\"/>
      </appSettings>
      <connectionStrings><add name="editor" connectionString="Data Source=base;Initial Catalog=centraldb;User ID=abc;Password=abc;"/></connectionStrings>
      <system.web><compilation debug="true"/><authentication mode="Windows"/><httpRuntime maxRequestLength="10240"/></system.web>
      <system.net><mailSettings><smtp><network host="smtp.abc.com.br" port="587" userName="abc@abc.com.br" password="abc"/></smtp></mailSettings></system.net>
    </configuration>

    (Claro que troquei alguns valores por abc só para não divulgar senhas).

    Bem, estou agora escrevendo um Windows Forms (EXE). Preciso escrever uma function/sub que, dando um caminho, abra o Web.Config para que eu possa ler o "mailingsettings" e o "appsettings" do "web.config".

    quinta-feira, 27 de fevereiro de 2014 18:08

Respostas

  • Achei um negócio legal, fica ai para futuros usuários que venham a acessar o fórum - vai que é útil para mais alguém.

    Friend Sub OpenWebConfig()
        Dim dummyVirtualPath As String = "/MyApp"
        Dim physicalPath As String = "c:\Software\FleetConnect\Web"
        Dim map As New System.Web.Configuration.WebConfigurationFileMap()
        map.VirtualDirectories.Add(dummyVirtualPath, New System.Web.Configuration.VirtualDirectoryMapping(physicalPath, True))
        Dim Configuration As System.Configuration.Configuration = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(map, dummyVirtualPath)
    End Sub

    Funciona bem.

    sexta-feira, 7 de março de 2014 11:20

Todas as Respostas

  • Achei outra solução, mas ainda gostaria de saber se alguém souber outra forma.

    Na aplicação web, o Web config roda nativo, sem nenhum trabalho para leitura. Na aplicação Windows Forms eu carrego e leio, nó a nó usando XmlDocument e XmlNode, como se fosse um XML qualquer. Busco o nó que preciso e carrego as informações.

    quinta-feira, 6 de março de 2014 11:50
  • Creio que seja mais fácil esta solução informada por você.

    Já que o App.Config tem outras informações distintas do Web.config

    Mais fácil buscar as informações linha a linha e buscar o que deseja. Seja ele do Settings ou mailsettings


    At

    Alan
    quinta-feira, 6 de março de 2014 14:43
  • Eu estou vendo que deve ser o único jeito, porque seria muito mais simples se eu pudesse mandar o "webconfigurationmanager" (de "system.web.configuration") acessar um arquivo através de um path.

    Não sei se isso é possível, visto que o método "OpenWebConfiguration(String)" só funciona usando um Virtual Path e não um Path real.

    • Editado SammuelMiranda sexta-feira, 7 de março de 2014 11:13 complemento
    sexta-feira, 7 de março de 2014 11:11
  • Achei um negócio legal, fica ai para futuros usuários que venham a acessar o fórum - vai que é útil para mais alguém.

    Friend Sub OpenWebConfig()
        Dim dummyVirtualPath As String = "/MyApp"
        Dim physicalPath As String = "c:\Software\FleetConnect\Web"
        Dim map As New System.Web.Configuration.WebConfigurationFileMap()
        map.VirtualDirectories.Add(dummyVirtualPath, New System.Web.Configuration.VirtualDirectoryMapping(physicalPath, True))
        Dim Configuration As System.Configuration.Configuration = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(map, dummyVirtualPath)
    End Sub

    Funciona bem.

    sexta-feira, 7 de março de 2014 11:20