gpt4 book ai didi

c# - 检测在调试中工作但在生产中不工作的刷新/回发条件

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:47 24 4
gpt4 key购买 nike

在网上搜索后,似乎有一个强烈的共识,即防止刷新触发数据库访问的好方法是使用 ViewState 变量和 Session 变量来检测条件。这是我的基页类中的代码:

    protected override void OnLoad( EventArgs e )
{
base.OnLoad( e );

if ( IsPostBack && ViewState["REFRESH_CHECK"] != Session["REFRESH_CHECK"] )
{
IsRefresh = true;
}
Session["REFRESH_CHECK"] = System.Guid.NewGuid().ToString();
ViewState["REFRESH_CHECK"] = Session["REFRESH_CHECK"];
}

public virtual bool IsRefresh
{
get;
private set;
}

所以在我的页面中有一些代码如下所示:

    protected void Page_Load( object sender, EventArgs e )
{
if ( !IsPostBack )
{
if ( !IsRefresh )
{
doStuffThatShouldOnlyBeDoneOnce();
}
}
}

这在调试时非常有效,但是当我在生产系统上运行时,我总是会调用两次 doStuff...() 方法。当然,当我调试它时,只有一个调用。

它可能相关也可能不相关,但我也在使用嵌套母版页。

有什么想法吗?

最佳答案

哦,伙计,请不要使用此代码,这会破坏您的网页。对于一个简单的测试,尝试使用两个不同的选项卡打开同一页面,您将看到解决方案失败。F5 刷新问题的唯一解决方案是 Response.Redirect。我已经尝试过这个解决方案,所以我根据我的经验告诉你。

关于c# - 检测在调试中工作但在生产中不工作的刷新/回发条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12975725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com