zeromax 发表于 2018-12-9 13:48:47

IIS 中Asp.net网站输入网站名默认页提交问题解决

  最近用vs2010开发的一个网站中,设置了默认页为default.aspx,但只输入网站名的情况下,该页面数据不能正常提交,后台调试代码发现并不执行。进一步发现,如果建立web应用程序时,不存在该问题。为使输入默认网站时能够正常提交数据,增加了Form的Action属性:
   1:    2:                     3:                            4:                        用户名:   5:                               7:                           8:                        密    码:   9:                            11:                            忘记密码12:                        13:                            15:                            16:                              记住登录状态17:                        18:                        19:                            20:                            正在系统,请稍候... 21:                  22:                  23:                  24:                        还不是会员,现在注册25:                  

  在添加了Action属性后,可以正常显示了,但当访问该网页中带有查询字符串时,因为提交的网址是default.aspx,是没有后面的查询字符串的,会出现问题,如上面的页面为登录页面,如果在web.config中配置了登录url后,在访问需要登录的页面时,会在页面后带有查询字符串的网址,如:http://localhost/CCUINCom/Default.aspx?ReturnUrl=%2fCCUINCom%2fmanagerCom%2fcustomizeCom.aspx。此时,当登录完成后就不能返回原来的页面。
  为了解决这一问题,在页面加载时,指定form的Action属性为请求时的地址,如:
   1:protected void Page_Load(object sender, EventArgs e)   2:      {   3:          //在只输入网站不输入页面地址时,iis不触发事件,不能正常登录,   4:          //因此,在form中添加了action=default.aspx后,使得因为超时后返回该页面所带的returnUrl参数无效   5:          //因此在页面加载时,得到原始url并将form的action设置成原始地址,以保证正常跳转   6:          Form.Action = Request.RawUrl;   7:          string returnUrl = Request.QueryString["ReturnUrl"];   8:          if (IsPostBack)   9:          {10:             ... ...11:          }12:          else13:          {14:            ... ...15:          }16:      }
.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Courier New", courier, monospace;background-color: #ffffff;/*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #006080; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt {background-color: #f4f4f4;100%;margin: 0em;}.csharpcode .lnum { color: #606060; }  此时,可以正常返回登录前的页面了。为此,又得到了一种Asp.net跨页的方式,就是如上种设置form的Action属性,经过实验,页面提交时会转到相应的页面,但会提示viewState验证错误,设置页面的参数,对视图状态不进行验证就可以了,此时可以通过Request的forms属性来访问值 ,这就和asp环境下的方式有些类似了。



页: [1]
查看完整版本: IIS 中Asp.net网站输入网站名默认页提交问题解决