【问题标题】:asp.net could a half submitted web page be processed?asp.net 可以处理一半提交的网页吗?
【发布时间】:2010-04-21 09:59:00
【问题描述】:

在生产中有一个奇怪的错误,只是想知道服务器是否可以处理一半提交的网页?

页面没有视图状态,只是使用普通的旧 html 控件并通过 Request.Form[name] 等访问后端转发器中显示的数据。

是否有可能由于 Internet 连接丢失和服务器仍在处理页面而截断请求。因此,如果字段不是请求的一部分 Request.Form[name] 可能会导致 null?

我知道可以使用 fiddler 修改请求,但遗憾的是我们不允许更改组策略和更改代理!

非常感谢

【问题讨论】:

    标签: asp.net httprequest page-lifecycle


    【解决方案1】:

    是否有可能由于 Internet 连接中断和服务器仍在处理页面而导致请求被截断?

    是的,这是可能的,如果有人按下提交按钮,即使页面没有完全加载,浏览器也会关闭表单并提交直到那一刻为止的所有内容。 !

    要检查页面是否已满发送,请离开 EnableEventValidation=true 如果页面未完全发送,则会出现 throw 错误。

    我认为 Page.IsValid 函数也可以做类似的工作。如果页面有效,那么您将获得所有数据。

    因此,如果您在页面的一部分上有延迟,那么您将获得在那之前的任何数据浏览器。

    要测试我所说的内容,请在您的页面中使用此代码,当您的页面达到此延迟时,请单击一个按钮,您只会获得到目前为止的数据。

    <%
    Response.Flush();
    System.Threading.Thread.Sleep(10000);
    %>
    

    任何页面都可以提交损坏的数据,发生多次,

    这就是为什么 ms 在每个页面中都包含 __EVENTVALIDATION 隐藏控件(除非您禁用它),以检查页面是否已更正并将其发回。

    【讨论】:

    • 感谢您现在可以复制您的建议并解释奇怪的行为。
    【解决方案2】:

    这是不可能的。页面是否提交。

    要调试问题,请记录所有表单字段(名称和值)并在那里查找错误。 很有可能您使用的是相同的 IDName,这就是您丢失字段的原因。

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2012-11-23
      • 2018-04-09
      • 2013-04-05
      • 1970-01-01
      • 2011-01-26
      相关资源
      最近更新 更多