Java.scriptを使用してweb.configの設定値を読み取る方法はありますか?なぜ私はそれをしたいのですか?
ユーザーが20分間非アクティブな場合、カウントダウンタイマー(2分間のカウントダウン)でモーダルダイアログをポップアップ表示するタイマーがWebサイトにあります。ユーザーが応答しない場合、ログアウトします。その場合、サーバーに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文字[このエラーで中断]非アクティブ:<%= ConfigurationManager.AppSettings ["非アクティブ"]%>;」というエラーが発生します。
ASP.NETからJavaScriptを生成できます。
次に、次のようにサーバー側の設定をvar defaults
に書き込むだけです。
var defaults = {
inactivity: <%=ConfigurationManager.AppSettings["Inactivity"] %>
}
編集:
JavaScriptを静的なjsファイルに保持したい場合は、ASP.NETアプリケーションによってレンダリングされた小さなvar defaults
から<script>
を初期化できます。 web.config
のAppSettings
と同様に、設定はグローバルになります。
ビューから変数として渡します。
<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ファイルから構成ファイルに直接アクセスすることはできません。これを行う1つの方法は、.aspxページにJavaスクリプトを追加することです。
私のWeb構成:
<appSettings>
<add key="test" value="textBox"/>
</appSettings>
私のaspxページ
この変数をグローバルに設定して、静的jsファイルmy jsファイル内でこの変数にアクセスできるようにしますhome.js
function ReadConfigSettings()
{
alert( test);
}
したがって、この方法でjavascriptからweb config値を読み取ることができます。
設定ファイルに値を配置した後、値を使用するページで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'
}
私は次の方法を試してみましたが、それは私が作業している.aspxページで機能しました、私のために機能していないことに気付いたのは、「[」を使用している代わりに、「(」を使用して機能していました.
var key = '<%=System.Configuration.ConfigurationManager.AppSettings("Environment").ToString() %>';
JSファイルを動的にし、web.configを読み取ることができるサーバー側スクリプトによってタイムアウトを書き出す
例として、次のように定義されたappsettings
変数があります。
add key="ApplicationId" value="2"
Javascriptファイルからは(サーバーにあるため)これを読み取ることができないため、マスターファイルで変数を定義することができます。そのため、マスターファイルにはJavaスクリプト変数が含まれます。
<% var appId= ConfigurationManager.AppSettings["ApplicationId"]; %>
Javaスクリプトファイルからこの変数にアクセスできます。これは、このsiteHost変数がJavaスクリプトでグローバルスコープを持つためです。
したがって、.js
ファイルでこの変数にアクセスするには、
alert(appId);