主题:  Trace="True"引发的一场问题!!!斑竹进!!!

Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#12006/3/28 15:28:34
我先说明一下我的代码,如下:
<a href=# runat="Server" onclick="javascript:window.open('ShoppingCart.aspx?AddToCart=10000000003','ShoppingCart');return false;">放入购物车</a>
我单击"放入购物车"后,打开"ShoppingCart.aspx",
ShoppingCart.aspx为<%@ Page language="c#" Codebehind="ShoppingCart.aspx.cs" AutoEventWireup="false" Inherits="GW.Web.ShoppingCartPage" Trace="True" %>
ShoppingCart.aspx.cs的代码为
private void Page_Load(object sender, System.EventArgs e)
{
    if (!Page.IsPostBack)
    {
        LoadData();
    }
    ......
}
其中
private void LoadData()
{
    CartManager shoppingCart = new CartManager();
    if ( (Request["AddToCart"] != null) && (Request["AddToCart"] != ""))
    {
        shoppingCart.AddItem( Request["AddToCart"] );
        Response.Redirect("ShoppingCart.aspx");
    }
    ......
}
下面说明一下在Trace="True"和Trace="False"的区别:
Trace="True"
程序走到"Response.Redirect("ShoppingCart.aspx");"后,会再次调用"void Page_Load()",
然后在打开ShoppingCart.aspx

Trace="False"
程序走到"Response.Redirect("ShoppingCart.aspx");"后,就直接打开了ShoppingCart.aspx

我想问下,这个是为什么啊,先谢谢兄弟们了!



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22006/3/28 16:37:53
设置为true,可以在页面输出跟踪调试信息
Trace.Write可以输出有用的测试信息


非常大鱼

Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#32006/3/28 17:20:07
这个我知道啊,
但是web.config设置为
<trace
enabled="true"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
        localOnly="true"
/>
同时设置ShoppingCart.aspx的trace为true的话,为什么在其他的机子上也能看到trace的信息啊?
localOnly="true"不是只有本机才能看到吗?
另外,我设置为false的话,购物车必须刷新一下,才能显示以前添加到购物车的物品!
true和false, 影响了ShoppingCart.aspx.cs的代码的流程了
这个是为什么啊?



Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#42006/3/28 17:21:20
刚才忘了说了,设置为true的话,购物车的显示就是正常的,不用刷新就可以显示以前添加到购物车里的物品!



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#52006/3/29 1:56:25

我只想说,编程是实践性的活,很多事我都不想问为什么。
怎样实现就怎么着吧。

人可以编出很优秀的东西,可以制造出许多莫明其妙的事来,这就是人,哈哈

看着办吧,你实践的就是正确的


非常大鱼

Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#62006/3/29 10:28:28
蓝鲸大哥,我想找到解决问题的方法啊,
问题就是:
Trace="True"
程序走到"Response.Redirect("ShoppingCart.aspx");"后,会再次调用"void Page_Load()",
然后在打开ShoppingCart.aspx

Trace="False"
程序走到"Response.Redirect("ShoppingCart.aspx");"后,就直接打开了ShoppingCart.aspx
我想让怎么就能在Trace="False"的情况下,
程序走到"Response.Redirect("ShoppingCart.aspx");"后,和Trace="True"一样
再次调用"void Page_Load()",然后在打开ShoppingCart.aspx

而不是直接打开ShoppingCart.aspx



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#72006/3/29 11:07:54
Trace = 'True'是为了调试用的,一般还是放在web.config上比较方便,这样可以很方便关闭。完成后,应设置为flase

你上述方法好象没什么必要,程序测试正常后就关闭,或者全部打开就行。

不过一定要这样,试试用Server.Transfer看看,我没试过


非常大鱼

Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#82006/3/29 13:12:40
用了Server.Transfer不行,
程序的代码是:
if ( (Request["AddToCart"] != null) && (Request["AddToCart"] != "")
{
    shoppingCart.AddItem( Request["AddToCart"] );
    //Response.Redirect("ShoppingCart.aspx";
    Server.Transfer("ShoppingCart.aspx";
}
用Server.Transfer是不是会把Request信息保留啊?
Server.Transfer是什么作用啊?
查了下msdn,没有看明白!
我是在修改一个程序
它以前在页面上有Trace="True"
我去掉,或者改为Trace="False"后,购物车就不能正常的显示了,就出现了我上面所说的问题.

能不能帮我看看,这个是什么原因啊?实在是想不通!HOHO



Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#92006/3/29 13:15:43
用了Server.Transfer是报以下的错误
"JIT调试失败,出现以下错误:拒绝访问."



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#102006/3/29 13:20:42
你是用DropdownList控件吧,我用这个控件也很纳闷,可能会有传值失败的问题。
不过用Transfer没试过,在用js操作后就失败了。如果这样,可以把该值放在TextBox隐藏控件中,就能传值。
Server.Transfer有参数,可以在页切换后,保持url不变
另外在各控件的值均可以传递过去。

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2006-03-29 13:26:38)]

非常大鱼

Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#112006/3/29 14:39:35
我没有用DropdownList,只是在前一个页面的控件上用到了DropdownList;
另外我这个问题有没有解决的方法啊,我都快晕死了,HOHO!
是不是Trace="True"在页面输出的时候,又刷新了一次页面?

还有个问题就是:
在Trace="False"的情况下,
ShoppingCart.aspx.cs中的代码运行到"Response.Redirect("ShoppingCart.aspx");"
不管怎么样也应该再次调用"void Page_Load()"吧,这里也搞不懂是为什么 ??



Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#122006/3/29 14:52:09
呵呵,是用到了一个DropdownList,难道是这个东东给影响了?
但是我上面的回复说的问题, 还是想不明白啊!



Steveson

职务:普通成员
等级:1
金币:0.0
发贴:68
#132006/3/30 14:02:28
怎么没有人理我了