莫言科技

全过程、自定制,轻松实现跨 旅游集散中心自助游

票务与调度系统(独立版) 整合旅游集散中心资源,提供 自助半自助游自定义套餐

面向有志创业的人士、基于云 计算理念提供的创业产品

敬请期待

查看: 1943|回复: 0

【体验式实践系统】上传文件大小限制、捕获大小限制异常-凯发k8官网下载客户端

[复制链接]
发表于 2010-12-16 18:44:48 | 显示全部楼层 |
本帖最后由 star 于 2010-12-16 19:53 编辑
2 o p1 {% n8 c" j$ o% p4 _' j5 y* p: v/ @$ h" c
具体办法是参照的这里:" k* `* c: e2 f& l: z% g `
添加了application_beginrequest函数,还记得
  1. <%@ import namespace="system.web.configuration" %>
复制代码
,把web.config的内容import 过来
, a2 l( r  g  |- s% t1 |, [- v% \4 {( a: [& p d; q
方法是正确的,而且比较好9 e5 l0 l# t0 k. x \& f
只是eb_exp有个问题就是在进入实践页面的时候,pr_id,ex_id,com_id都是从left树里面传递过去的,使用上面的将诶办法,当出现异常的时候会需要从asax重定向到出现异常的页面,如果不加处理就直接定向到异常页面,在页面加载的时候会重新绑定数据,这是需要重新将pr_id,ex_id,com_id这些参数传递过去,asax页面是读不到querystring,应该是request的内容已经修改了,之前的地址参数已经没有了。
; g' f2 s* y* u7 l$ j! d. m/ x于是在practicepagebase页面在读loadquerystring函数中,在读地址参数的同时将其保存到cookie中,cookie信息是可以在有效时间内保存的;
  1. public virtual void loadquerystring() h7 b4 \5 w' r6 g8 b
  2.     {
    - v( t7 o1 t1 c
  3.         /*如果上传的文件超过web.config中限定的最大值,使用asax来进行异常捕获时,会需要重定向请求url,
    & d! i0 g7 x" s
  4.             所以需要将ex_id、cm_id、pr_id信息放到cookie中进行保存,在asax进行页面重定向的时候再将这些值作为地址参数传递过来/ j5 b6 d  \  z! h# i4 f' s" `5 b! u  s
  5.             否则页面重定向没有再传入实践id等参数,页面会加载不了数据*/
    . v7 c) c- a- m9 f
  6.         if (request.querystring["ex_id"] != null)
    ' y3 t/ m r4 b3 r) a
  7.         {
    % i! ^ l; c3 t$ [0 g  u8 u9 q' _
  8.             int.tryparse(request.querystring["ex_id"], out this.ex_id);
    # r/ f( {& o- ~% d, a# i& r. p2 e" u
  9.             httpcookie ex_id = new httpcookie("ex_id", request.querystring["ex_id"].tostring());
    # j0 k, y6 y- k: k
  10.             if (!request.browser.cookies)
    . e( ]! e7 j2 z8 a7 }9 _
  11.             {( x: t5 v% k2 z1 c$ u `; i
  12.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");
    : {# u' q! d6 r; [. x' {
  13.                 return;
    : |1 i- c _; e: {7 m- k7 k5 t
  14.             }# f( b! f# f( b' f
  15.             response.cookies.add(ex_id);9 f4 y  r a( u2 p q3 h3 a/ i
  16.         }
      o  v0 i9 r% u1 ]/ d
  17.         if (request.querystring["cm_id"] != null)
      y" y, }3 l$ h2 j6 \7 [
  18.         {
    . {' }% h/ ], x  p" f: l
  19.             int.tryparse(request.querystring["cm_id"], out this.cm_id);
    2 u6 m, u& ` r7 l- i0 f2 b
  20.             httpcookie cm_id = new httpcookie("cm_id", request.querystring["cm_id"].tostring());
    $ r: d! b! k. l! g1 w- @3 g- g
  21.             if (!request.browser.cookies)
    2 r7 n3 l! u7 m
  22.             {
    8 ^: b1 k6 y: o0 i1 _  a/ }# y
  23.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");0 e  q3 n* u9 i; {$ a  h8 s% ]
  24.                 return;
    2 i1 x- x, b2 r& d, h" j
  25.             }
    5 o- d6 f5 a  j
  26.             response.cookies.add(cm_id);
    ' z; g8 e3 j2 l/ f5 n  k; o$ m* f& t
  27.         }1 w1 @' h/ l3 d: v1 h
  28.         if (request.querystring["pr_id"] != null)( ~& w8 u, s4 h6 `( j5 ~5 ^
  29.         {( e# s* k0 b1 y- a; f g ~
  30.             int.tryparse(request.querystring["pr_id"], out this.pr_id);
    2 `1 c3 ?& n3 p4 r9 h
  31.             httpcookie pr_id = new httpcookie("pr_id", request.querystring["pr_id"].tostring());, g0 _0 n7 g  d9 ~  n2 s
  32.             if (!request.browser.cookies)/ l/ m5 b1 \* b
  33.             {
    : q* m0 ]" u( w1 z/ i% i" k
  34.                 javascript.alert("usercookie_unable", "请打开浏览器的cookie功能以保证有足够的操作时间,谢谢!");
    * ` {; ~8 q$ \
  35.                 return;
    : w- i2 g; e7 w/ v9 h3 @
  36.             }
    ( w& \2 t* e; a8 }5 |$ @ n4 a; o
  37.             response.cookies.add(pr_id);( b2 w- c y0 [' b g
  38.         }0 v, m4 d! q0 c/ v( y: v
  39.     }
复制代码
再在asax页面读取cookie信息;
  1. //读cookie信息,初始化为"-1",因为practicepagebase是以-1进行判断的8 s* ]- x9 a' e
  2.         string ex_id = "-1"; f2 w/ e8 b z1 l) d6 m9 u
  3.         string cm_id = "-1";
    8 j# b; g% w2 t0 q# @; k }. z
  4.         string pr_id = "-1";
    0 w* b6 [- _! t8 j
  5.         if (request.cookies["ex_id"] != null), v. ?0 o  |# r$ g9 m' d& m
  6.         {
    ' r* p% r4 `( c& y. ^* _6 s6 z
  7.             ex_id = request.cookies["ex_id"].value;
    : q; l7 y( o2 m$ z5 @
  8.         }; n- n' d8 l) {
  9.         if (request.cookies["cm_id"] != null). q( p( i  v; h
  10.         {
    ; [& o# t1 ~" s! x9 s
  11.             cm_id = request.cookies["cm_id"].value;
    7 h" c- t3 y. ?. o0 k3 w- o- a
  12.         }6 p! f! _7 v' `& ~9 m5 i  m
  13.         if (request.cookies["pr_id"] != null)
    " @6 r% j! l* | p. f0 n6 v8 q
  14.         {
    . q# u c x* m  g* n
  15.             pr_id = request.cookies["pr_id"].value;
    & e/ ^( ^2 b; r! f
  16.         }
复制代码
最后在重定向的时候将pr_id,ex_id,com_id再作为地址参数传递过去,在页面加载的时候就能加载到实践数据了
  1. //请求重定向到上载页面,并给用户提示信息,同时将实践id等参数继续作为地址参数传递到页面上,这样页面才能够加载到实践数据。
    - v8 {0 m- l9 c q* x* n
  2.             context.response.redirect(this.request.url.localpath "?error=" server.urlencode("请上传小于4m的文件!") "&ex_id=" ex_id "&cm_id=" cm_id "&pr_id=" pr_id);
复制代码
还有一点需要注意的就是:
  1. /*注意顺序以及ispostback*/        7 n: p/ n" h# c/ j% k$ u* j
  2.         this.loadquerystring();
    ) [' p# u4 x/ n0 b
  3.         this.loadusercookie();% r: s5 q$ v* l; ]- g& i
  4.         if (!this.ispostback)//回传的话就不执行了,以防每次刷新页面都会进行提醒,因为request.querystring["error"]的内容没有改变
    6 l1 ^* }& q, m  n
  5.         {* w4 h5 i0 s* \% y
  6.             if (!string.isnullorempty(request.querystring["error"]))
    * d  m' r! o1 \1 w" n" f  v
  7.             {
    , l% j# u/ i8 v: c' t! r5 z
  8.                 string errmsg = server.htmlencode(request.querystring["error"]);6 k* r, e$ _* d  l2 _
  9.                 javascript.alert(errmsg);
    7 x- v3 o w0 z7 i
  10.                 this.loadquerystring();% m0 s8 ~. t3 }1 j3 ^
  11.             }
    v7 z# p" j, g* f8 q! {7 p. f" g
  12.         }
复制代码
错误提示,并且能正常重定向页面
p n( \% c5 m

本帖子中包含更多资源

您需要 才可以下载或查看,没有帐号?

x

||archiver|莫言科技 ( )    

gmt 8, 2021-3-17 07:32 , processed in 0.070315 second(s), 11 queries , wincache on.

powered by x3.2

© 2001-2013

返回列表