从 JavaScript 读取 web.config

IT技术 asp.net javascript web-config
2021-03-15 00:14:18

有什么方法可以使用 javascript 读取 web.config 中的配置值吗?我为什么要这样做?

我的网站上有一个计时器,如果用户处于非活动状态 20 分钟,它会弹出一个带有倒计时计时器(倒计时 2 分钟)的模式对话框。如果用户没有响应,它会将他注销。如果他这样做,它会ping服务器(以维持会话)并使会话保持活动状态

这 15 分钟硬编码在 js 文件中。我宁愿从配置文件/其他文件中提取它,也不愿将其硬编码到 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' 
        }

有什么建议?

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

6个回答

您可以从 ASP.NET 生成 JavaScript。

然后只需将服务器端的设置写成var defaults这样:

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

编辑:

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

如果它只是一个 javascript 文件,我还可以使用它吗?
2021-04-19 00:14:18
出于某种原因,在我在 AppSettings 调用周围加上单引号之前,上面的代码对我不起作用。
2021-05-09 00:14:18

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

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

重复尽可能多的变量。

Jarrett:这会将 js 拆分为 aspx 和 js 文件。我认为如果我们能在一个地方维护它会很好
2021-04-21 00:14:18

无法从单独的静态 JS 文件直接访问配置文件。执行此操作的一种方法是在 .aspx 页面中添加 java 脚本。

我的网络配置:

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

我的aspx页面 在此处输入图片说明

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

function ReadConfigSettings()
{
   alert( test);
}

所以我们可以通过这种方式从 javascript 读取 web 配置值。

将值放入配置文件后,在您将使用该值的页面上,以如下方式放置 java 脚本:您将在 java 脚本中访问该值作为全局,不需要声明它。

在网络配置上:

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

在 html 页面上:

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

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

最好使您的 JS 文件动态并从您的配置中添加适当的参数。例如:

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