Чтение web.config из JavaScript - PullRequest
       28

Чтение web.config из JavaScript

30 голосов
/ 15 декабря 2009

Есть ли способ, с помощью которого я могу читать значения конфигурации в web.config с помощью javascript? Зачем мне это делать?

У меня на сайте есть таймер, который выдает модальное диалоговое окно с таймером обратного отсчета (обратный отсчет в течение 2 минут), если пользователь неактивен в течение 20 минут. Если пользователь не отвечает, он выходит из системы. Если он это делает, он отправляет эхо-запрос на сервер (для поддержания сеанса) и поддерживает сеанс в рабочем состоянии

Эти 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 [Сбой при этой ошибке] неактивность: <% = ConfigurationManager.AppSettings ["Неактивность"]%>; "

Ответы [ 8 ]

52 голосов
/ 15 декабря 2009

Вы можете создать свой JavaScript из ASP.NET.

Затем просто запишите настройки на стороне сервера в ваш var defaults, например:

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

EDIT:

Если вы хотите сохранить свой JavaScript в статических js-файлах, вы все равно можете инициализировать var defaults из небольшого <script>, отображаемого вашим приложением ASP.NET. Ваши настройки будут глобальными, как AppSettings в web.config.

15 голосов
/ 15 декабря 2009

Передайте их как переменные из представления.

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

Повторите столько раз, сколько у вас есть.

8 голосов
/ 03 февраля 2015

Невозможно получить прямой доступ к файлу конфигурации из отдельного статического файла JS. Один из способов сделать это - добавить java-скрипт на страницу .aspx.

My Web Config:

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

Моя страница aspx enter image description here

Мы глобально устанавливаем эту переменную, чтобы мы могли получить доступ к этой переменной внутри нашего статического js-файла.

function ReadConfigSettings()
{
   alert( test);
}

Таким образом, мы можем читать значения веб-конфигурации из javascript таким образом.

6 голосов
/ 18 февраля 2016

После того, как вы поместите значения в файл конфигурации, на странице, где вы будете использовать значение, поместите java-скрипт следующим образом: Вы получите доступ к значению в java-скрипте как к глобальному, нет необходимости объявлять его .

в веб-конфигурации:

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

на странице html:

<script>
    var varName= '@System.Configuration.ConfigurationManager.AppSettings["varName"]';
</script>
4 голосов
/ 15 декабря 2009

Обычно вы не хотите, чтобы 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' 
    }
1 голос
/ 04 сентября 2018

Я попробовал следующий способ, и он сработал для меня на странице .aspx, с которой я работаю. То, что я заметил, что у меня не работает, использует '[', вместо этого я использовал '(', и это сработало) для меня.

var key = '<%=System.Configuration.ConfigurationManager.AppSettings("Environment").ToString() %>';
0 голосов
/ 05 июня 2012

Например, у вас есть переменная appsettings, определенная как

add key="ApplicationId" value="2"

Поскольку из файла javascript вы не можете прочитать это (так как он находится на сервере), вы можете определить переменную в главном файле. поэтому ваш мастер-файл будет содержать переменную java-скрипта.

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

Теперь из файла java-скрипта вы можете получить доступ к этой переменной, поскольку эта переменная siteHost имеет глобальную область действия в java-скрипте.

Таким образом, вы можете получить доступ к этой переменной в файле .js как

alert(appId);
0 голосов
/ 15 декабря 2009

Сделайте ваш JS-файл динамическим и запишите время ожидания с помощью серверного скрипта, который может прочитать ваш web.config

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...