Est-il possible de lire les valeurs de configuration dans web.config avec javascript? Pourquoi voudrais-je faire cela?
J'ai un chronomètre sur mon site Web qui fait apparaître un dialogue modal avec un compte à rebours (compte à rebours de 2 minutes) si l'utilisateur est inactif pendant 20 minutes. Si l'utilisateur ne répond pas, il le déconnecte. S'il le fait, il envoie une requête ping au serveur (pour maintenir la session) et maintient la session active.
Ces 15 minutes sont codées en dur dans le fichier js. Je préférerais le récupérer à partir d'un fichier de configuration/d'un autre fichier que de l'avoir codé en dur dans le JS
voici l'extrait de code
$.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'
}
Aucune suggestion?
Edit: Ceci est dans un fichier js séparé. Faire <% =%> donnerait à l'erreur "caractère XML illégal [Interruption sur cette erreur] inactivité: <% = ConfigurationManager.AppSettings [" Inactivité "]%>;"
Vous pouvez générer votre JavaScript à partir d'ASP.NET.
Ensuite, écrivez simplement les paramètres côté serveur sur votre var defaults
comme ceci:
var defaults = {
inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %>
}
MODIFIER:
Si vous souhaitez conserver votre code JavaScript dans des fichiers js statiques, vous pouvez toujours initialiser votre var defaults
à partir d'un petit <script>
rendu par votre application ASP.NET. Vos paramètres seraient globaux, tout comme la variable AppSettings
dans web.config
.
Transmettez-les sous forme de variables à partir de la vue.
<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>
Répétez l'opération pour autant de vars que vous avez.
Il n'est pas possible d'accéder directement au fichier de configuration à partir d'un fichier JS statique distinct. Une façon de procéder consiste à ajouter le script Java à la page .aspx.
Ma configuration Web:
<appSettings>
<add key="test" value="textBox"/>
</appSettings>
Ma page aspx
Nous définissons globalement cette variable pour pouvoir y accéder dans notre fichier js statique. Mon fichier js home.js
function ReadConfigSettings()
{
alert( test);
}
Ainsi, nous pouvons lire les valeurs de configuration Web à partir de javascript de cette façon.
Après avoir placé les valeurs dans le fichier de configuration, sur la page que vous utiliserez, indiquez le script Java de la manière suivante: Vous accéderez à la valeur du script Java de manière globale, il n’est pas nécessaire de la déclarer.
sur la config web:
</appSettings>
<add key="varName" value="1" />
</appSettings>
sur la page html:
<script>
var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]';
</script>
Généralement, vous ne voulez pas que web.config
soit directement accessible aux clients, car il peut contenir des informations importantes sur votre configuration (par exemple, les informations d'identification de la base de données que vous utilisez).
Il est préférable de rendre votre fichier JS dynamique et d’ajouter les paramètres appropriés à partir de votre configuration. Par exemple:
$.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'
}
J'ai essayé de la manière suivante et cela a fonctionné pour moi dans la page .aspx avec laquelle je travaille, la chose que j'ai remarquée ne fonctionnant pas pour moi utilise le '[', à la place j'ai utilisé '(' et cela a fonctionné pour moi.
var key = '<%=System.Configuration.ConfigurationManager.AppSettings("Environment").ToString() %>';
Rendre votre fichier JS dynamique et le faire expirer par un script côté serveur qui peut lire votre fichier web.config
Par exemple, vous avez une variable appsettings
définie comme
add key="ApplicationId" value="2"
Depuis un fichier javascript, vous ne pouvez pas lire ceci (puisqu'il réside sur le serveur), vous pouvez alors définir la variable dans le fichier maître. de sorte que votre fichier maître contiendra la variable de script Java.
<% var appId= ConfigurationManager.AppSettings["ApplicationId"]; %>
Maintenant, à partir du fichier de script Java, vous pouvez accéder à cette variable car cette variable siteHost a une portée globale dans le script Java.
Donc, vous pouvez accéder à cette variable dans votre fichier .js
en tant que,
alert(appId);