1

很简单。在 Web 客户端(Web 浏览器)向 Web 服务器发送请求后,Web 客户端期待并接收来自 Web 服务器的响应。之后(从提交开始)Web 客户端将一些数据发送到 Web 服务器(回发)。但是,在内部,Web 服务器如何知道什么是回发或网页的第一次请求(可能是 HTTP 请求中的一些标志?)?

4

3 回答 3

2

HTTP 有很多动词,例如POSTand GETGET就像输入网址一样。POST通常用于表格。

如果页面方法是POST,则应该设置(在 ASP.NET 中)。

if (Page.IsPostBack)
{

}
于 2012-09-17T21:15:54.443 回答
0

如果我们只是在谈论 IIS/服务器 - 那么它不能(就它自己而言)。第一个请求可以是任何动词(GET,POST或您允许的任何其他动词)。

如果我们谈论的是 ASP.NET Web 表单页面,您可以假设(但不是 100%)“第一个”请求是一个GET和一个“回发”,本质上术语本身就是一个POST. 但就像上面一样,您可以创建一个 ASP.Net 页面,将 aPOST作为它的第一个请求。

作为开发人员,您可以创建方法来识别“第一个请求”,但您可以定义它。这可能是您强制执行流程的方式。动词真的与识别“第一个(http)请求”没有任何关系......

于 2012-09-17T21:41:08.603 回答
0

虽然只是整个故事的一部分,但这可能是System.Web.UI.Page课程中最相关的摘录:

在方法中ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)

if (this._requestValueCollection != null) {
    [..]
    text2 = this._requestValueCollection["__CALLBACKID"];
    if (text2 != null && this._request.HttpVerb == HttpVerb.POST)
    {
        this._isCallback = true;
    }
[..]
}

显然,ASP.NET 在 post 参数中传输加密__CALLBACKID,并检查 HTTP 请求消息中是否设置了 POST 动词。

于 2012-09-17T21:33:22.900 回答