2011-04-19 90 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