在web.config中允许使用查询字符串的位置路径

时间:2012-05-25 17:16:13

标签: asp.net path web-config

我在web.config

中有这个
  <location path="ChangePassword.aspx">
     <system.web>
       <authorization>
         <allow users="*"/>
       </authorization>
     </system.web>   </location>

问题是,在访问页面时,我需要允许使用查询字符串访问此页面,这不起作用:

  • 为ChangePassword.aspx?模式=
  • 为ChangePassword.aspx的userid = XX&安培;模式=

我该怎么做?当然,参数将始终具有动态值,我无法在web.config中硬编码ID。

编辑以更好地理解问题

目的=未登录的用户必须能够访问ChangePassword.aspx页面,其中包含收到的任何查询字符串。

非登录用户的问题:

  • 他们可以访问ChangePassword.aspx
  • 他们无法访问ChangePassword.aspx?parameter=value

2 个答案:

答案 0 :(得分:0)

如果用户可以访问该页面,他们可以在路径中添加查询字符串。

授权机制仅在文件位置上运行 - 您无法对查询字符串参数进行操作。

如果您想根据参数更改页面行为,请在页面代码中执行此操作。

您可以轻松访问页面上的查询字符串参数:

Request.QueryString["UserId"]

答案 1 :(得分:0)

问题不在web.config中:有关标记的设置正确。 问题是链接

ChangePassword.aspx?Userid=xx&mode=

不允许正确路由到您页面的字符是“ ”。

确保使用正确的Xml编码编写(其他方式,它将所有的'&'字符替换为'&')。

这应该很好:

ChangePassword.aspx?Userid=xx&amp;mode=

或者您可以使用

  

System.Web.HttpUtility.HtmlEncode(yourUrl);

我希望它有用;)