2011-04-19 89 views
0

嘗試使用js和.net訪問web.config文件,並獲取「error.html?aspxerrorpath =/testing2.aspx」錯誤頁面。與web.config相關的javascript問題

<%@ Page Language="C#" %> 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>Untitled Page</title> 

<script type="text/javascript" runat="server"> 

    function ReadConfigSettings() 
    { 

     var v1 = '<%= ConfigurationManager.AppSettings["var1"].ToString() %>' 
     alert(v1); 

    } 
</script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <div><asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="ReadConfigSettings()" /></div> 
    </form> 
</body> 
</html> 
+0

你有在關鍵VAR1的項你的Web.Config文件的appSettings部分? – Chandu 2011-04-19 16:47:53

+0

這是非常危險的,你爲什麼不提供這個值的函數通過和Ajax調用像var v1 = ajax.getVar1();這不能解決你的問題,這只是一個推薦。 – 2011-04-19 16:48:48

+0

@rob - 它不是*危險的,因爲你正在控制'web.config'應用程序的設置值。如果有人在那裏將這個價值改變成惡意的東西,那麼無論如何這個遊戲都會與其他網站的遊戲相關。同樣在ASP.NET 4.0中,他可以使用'<%:'語法來對Html進行編碼和消毒。 – Kev 2011-04-20 16:32:26

回答

1

如果appSettings部分中沒有定義「var1」,您的代碼示例將拋出異常。

你可以代替試試這個:

<%= ConfigurationManager.AppSettings["var1"] %> 

該聲明將處理情況「VAR1」沒有定義的情況下。

要定義appSetting,你應該有這樣的事情在你的web.config:

<configuration> 
    ... 
    <appSettings> 
     <add key="var1" value="test" /> 
    </appSettings> 
    ... 
</configuration> 
+0

像這樣 2011-04-19 16:50:56

+0

是的,rob是正確的,只需要在「add」和「key」之間有一個空格 – rsbarro 2011-04-19 16:53:29

1

由於rsbarro已經解釋過,你的代碼可能拋出一個異常,由於沒有該設置的。

現在,我不確定你正在嘗試完成什麼。你的帖子的標題和代碼示例似乎表明你想從配置文件中提取一些值,只要你點擊按鈕。但是,這不是這裏發生的事情。

請記住,<% %>之間的任何內容都會在服務器上進行評估。所以,在你的頁面被渲染之前,它會嘗試運行該代碼並將其嵌入響應中,如你所示。最後,你會得到一個嵌入腳本中的靜態值。

<script type="text/javascript" runat="server"> 

    function ReadConfigSettings() 
    { 

     var v1 = 'MyStaticValue'; //This was rendered on the server 
     alert(v1); 

    } 
</script> 

如果你想做的事情比這更多,那麼你將不得不通過AJAX做到這一點。你有幾個選擇這裏:

  1. 創建一個Web服務(.asmx,或WCF
  2. 使用Page Methods
  3. 使用UpdatePanel
+0

對不起,我確實創建了一個添加鍵w /值在Web.Config文件@根目錄下,我的目標是在加載表單時獲取該值。 – Dennis 2011-04-20 14:30:24