2009-12-15 19 views
23

Esiste un modo per leggere valori di configurazione in web.config con javascript? Perché dovrei farlo?Leggere web.config da JavaScript

Ho un timer nel mio sito Web che apparirebbe una finestra di dialogo modale con un conto alla rovescia (conto alla rovescia per 2 minuti) se l'utente è inattivo per 20 minuti. Se l'utente non risponde, lo disconnette. Se lo fa, esegue il ping al server (per mantenere la sessione) e mantiene in vita la sessione

Questo 15 minuti è codificato nel file js. Avrei preferito voglia di raccoglierlo da un file di configurazione/qualche altro file che avere difficoltà codificato in qui il JS

è il frammento di codice

$.fn.idleTimeout = function(options) { 
     var defaults = { 
        //I would like to pick these values from some config file 
      inactivity: 900000, //15 minutes 
      noconfirm: 120000, //2 minutes 
      sessionAlive: 900000, //15 minutes 
      click_reset: true, 
      logout_url: '/Views/Pages/Timeout.aspx' 
     } 

Qualche suggerimento?

Modifica: questo è in un file js separato. Fare <% =%> darebbe un errore "carattere XML illegale [Inattività su questo errore] inattività: <% = ConfigurationManager.AppSettings [" Inattività "]%>;"

risposta

44

È possibile generare il tuo JavaScript da ASP.NET.

Poi basta scrivere le impostazioni sul lato server al vostro var defaults in questo modo:

var defaults = { 
    inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %> 
} 

EDIT:

Se si desidera mantenere il tuo JavaScript nei file js statico, è possibile inizializza ancora il tuo var defaults da un piccolo <script> reso dall'applicazione ASP.NET. Le tue impostazioni sarebbero globali, proprio come lo AppSettings in web.config.

+1

bella. grazie. questo andrebbe nella mia masterpage – ram

+0

meglio ................... uno – Lijo

+0

Posso ancora usare lo stesso se è solo un file javascript? – Mitz

0

Fai il file JS dinamica e lo hanno timeout scritto da uno script lato server in grado di leggere il tuo web.config

14

li Passare come variabili dalla vista.

<script type="text/javascript"> 
    // needs to reside in your *.aspx file. 
    $(function() { 
     initPage(<%= Settings.Default.Inactivity %>, <%= Settings.Default.NoConfirm %>, <%= Settings.Default.LogoutUrl %>) 
    }); 
    // Can reside in your *.aspx or in a *.js file. 
    function initPage(inactivity, noconfirm, logoutUrl) { 
     $.fn.idleTimeout = function(options) { 
      inactivity: inactivity, 
      noconfirm: noconfirm, 
      logout_url: logoutUrl 
     }; 
    }; 
</script> 

Ripeti per quanti più averi hai.

+1

Jarrett: questo dividerebbe il js tra aspx e il file js. Penserei che sarebbe bello se riuscissimo a mantenerlo in un posto – ram

4

In genere non si desidera che web.config sia accessibile direttamente ai client, poiché potrebbe contenere alcune informazioni importanti sulla configurazione (ad esempio, le credenziali per il database che si sta utilizzando).

È meglio rendere dinamico il file JS e aggiungere i parametri appropriati dalla configurazione. Per esempio:

$.fn.idleTimeout = function(options) { 
    var defaults = { 
       //I would like to pick these values from some config file 
      inactivity: <%=ConfigurationManager.AppSettings["Inactivity"].ToString() %>, 
      noconfirm: <%=ConfigurationManager.AppSettings["NoConfirm"].ToString() %>, //2 minutes 
      sessionAlive: <%=ConfigurationManager.AppSettings["SessionAlive"].ToString() %>, //15 minutes 
      click_reset: true, 
      logout_url: '/Views/Pages/Timeout.aspx' 
    } 
0

A titolo di esempio, si dispone di una variabile appsettings definita come

add key = valore "ApplicationId" = "2"

dato da un file javascript non è possibile leggere questo (poiché questo risiede nel server), ciò che puoi fare è definire la variabile nel file principale. quindi il tuo file master conterrà la variabile di script java.

"<% var = appId ConfigurationManager.AppSettings [" ApplicationId "];%>"

Ora dal file java script è possibile accedere a questa variabile dal momento che questa variabile siteHost ha una portata globale nel java script.

Così si può accedere a questa variabile nel file .js come,

alert (appId);

6

Non è possibile accedere direttamente al file di configurazione da un file JS statico separato. Un modo per fare ciò è aggiungere lo script java nella pagina .aspx.

My Web Config

<appSettings> 
    <add key="test" value="textBox"/> 
    </appSettings> 

La mia pagina aspx enter image description here

Stiamo allestendo a livello globale questa variabile in modo che possiamo accedere a questa variabile all'interno dei nostri js statici mio file js file di home.js

function ReadConfigSettings() 
{ 
    alert(test); 
} 

in modo da poter leggere i valori di configurazione Web da javascript da questo wa y

4

Dopo aver inserito i valori nel file di configurazione, nella pagina in cui si utilizzerà il valore, inserire lo script java in questo modo: Accedere al valore nello script java come globale, non è necessario dichiararlo.

sulla configurazione web:

</appSettings> 
    <add key="varName" value="1" /> 
    </appSettings> 

sulla pagina HTML:

<script> 
    var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]'; 
</script> 
Problemi correlati