从JavaScript读取web.config

有没有什么办法,我可以阅读configuration值在web.config与JavaScript? 我为什么要这样做?

我有一个计时器在我的网站,这将popup一个模式对话框倒数计时器(倒计时2分钟),如果用户不活动20分钟。 如果用户没有回应,则将其注销。 如果他这样做,它会ping服务器(维护会话)并保持会话活着

这15分钟在js文件中被硬编码。 我宁愿要从一个configuration文件/其他文件,而不是硬编码到JS中捡起它

这里是代码片段

$.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' } 

有什么build议么?

编辑:这是在一个单独的js文件。 执行<%=%>会给出错误“非法XML字符[Break on this error]不活动:<%= ConfigurationManager.AppSettings [”Inactivity“]%>;

你可以从ASP.NET生成你的JavaScript。

然后,只需在服务器端将这些设置写入您的var defaults如下所示:

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

编辑:

如果你想让你的JavaScript保持静态的js文件,你仍然可以从ASP.NET应用程序呈现的一个小的<script>初始化你的var defaults 。 您的设置将是全局的,就像web.configAppSettings一样。

将它们作为variables从视图中传递。

 <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> 

重复尽可能多的变数。

它不可能从单独的静态JS文件直接访问configuration文件。 这样做的一个方法是在.aspx页面中添加java脚本。

我的Webconfiguration

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

我的aspx页面 在这里输入图像描述

我们正在全局设置这个variables,所以我们可以在我们的静态js文件我的js文件home.js中访问这个variables

  function ReadConfigSettings() { alert( test); } 

所以我们可以通过这种方式从javascript读取webconfiguration值

通常,您不希望web.config直接访问客户端,因为它可能包含有关您的configuration的一些重要信息(例如,您正在使用的数据库的凭据)。

最好使您的JS文件变为dynamic并从您的configuration添加适当的参数。 例如:

 $.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' } 

把这些值放到configuration文件中后,在你要使用该值的页面上放这个java脚本的方法如下:你将在java脚本中作为全局访问这个值,不需要声明它。

在网页上configuration:

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

在html页面上:

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

让你的JS文件变成dynamic的,并通过可以读取你的web.config的服务器端脚本写出超时

作为一个例子,你有一个appsettingsvariables定义为

add key =“ApplicationId”value =“2”

因为从一个JavaScript文件你不能读取(因为这是驻留在服务器),你可以做的是在主文件中定义variables。 所以你的主文件将包含java脚本variables。

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

现在从java脚本文件中可以访问这个variables,因为这个siteHostvariables在java脚本中有一个全局作用域。

所以你可以在.js文件中访问这个variables,

警报(APPID);