`
yfdong21
  • 浏览: 61830 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Response.Redirect(),Server.Transfer(),Server.Execute()的区别.docx

阅读更多

1 Response.Redirect():

Response.Redirect 方法导致浏览器链接到 一个指定的 URL 。当 Response.Redirect() 方法被调用时,它会创建一个应答,应答头中指出了状态代 302 (表示目标已经改变)以及新的目标 URL 浏览器 从服务器收到该应答,利用应答头中的信息发出一个对新 URL 的请求

 

    这就是说,使用 Response.Redirect 方法时重定向操作发生在客户端 ,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,得到一个 302 应答,第二次是请求 302 应答中声明的新页面,得到重定向之后的页面。

 

2 Server.Transfer():

Server.transfer IIS 5.0 新增加的一个功能。它解决了

Response.Redirect 的两个重要的缺陷:

1 )在 Response.Redirect 中,我们得不到任何第一页的输出

2 Response.Redirect 会丢失 request 中的所有属性

当然我们可以通过一些其他的办法,比如 session 来搞定,可是,有些页的参数是在 request 中传过来的,这样的话,就不行了

3) Response.Redirect 需要 client 再发起一个请求。

 

server.transfer 就很好地解决了这些问题。它是 server 端直接向下一页发起请求,不需要 client 再次发送请求 .

如果你的网页非常依赖 response.redirect, 这个小小的改变可以提高将近 25% 的效率。(根据微软文档) .

 

    Server.Transfer 方法把执行流程从当前的 ASPX 文件转到同一服务器上的另一个 ASPX 页面。调用 Server.Transfer 时,当前的 ASPX 页面终止 执行,执行流程转入另一个 ASPX 页面,但新的 ASPX 页面仍使用前一 ASPX 页面创建的应答流

 

    如果用 Server.Transfer 方法实现页面之间的导航,浏览器中的 URL 不会改变 ,因为重定向完全在服务器端进行,浏览器根本不知道服务器已经执行了一次页面变换

 

    默认情况下, Server.Transfer 方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成 True ,就可以保留第一个页面的表单数据和查询字符串

 

    同时,使用 Server.Transfer 时应注意一点:目标页面将使用原始页面创建的应答流,这导致 ASP.NET 的机器验证检查( Machine Authentication Check MAC )认为新页面的 ViewState 已被篡改 。因此,如果要保留原始页面的表单数据和查询字符串集合,必须把目标页面 Page 指令的 EnableViewStateMac 属性设置成 False

 

server.Transfer() 有一个不足就是 : 当用户在 a.aspx 中提交了一个表单 , 然后用 Server.Transfer() 进入 b.aspx ,这时如果用户刷新 一下页面,浏览器便会问用户是否“重试 ”发送表单,如果用户点击“是”,那么,表单中的数据被重新发送到服务器 。如发送表单的作用就是为了向数据库中插入一条记录,结果导不希望发生的事——同一表单被多次加入到数据库中。

 

3 Server.Execute

    Server.Execute 方法允许当前的 ASPX 页面执行一个同一 Web 服务器上 的指定 ASPX 页面,当指定的 ASPX 页面执行完毕,控制流程重新返回原页面发出 Server.Execute 调用的位置

 

    这种页面导航方式类似于针对 ASPX 页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把被调用页面 Page 指令的 EnableViewStateMac 属性设置成 False

 

Server.Execute("another.aspx") Server.Transfer("another.aspx") 区别 : 

Execute 是从当前页面转移到指定页面 , 将执行返回到当前页面  

Transfer 将执行完全转移到指定页面

 

 

总结:

网络状态较好 的情况下 ,Redirect(url) 方法效率最高 !! 可重定向到同一台或非同一台 服务器上的 aspx 或非 aspx html )资源

Server.Transfer 方法和 Server.Execute 方法最灵活 !! 只能转到同一 Application 目录下 ,也有可能导致不期望的结果发生

Server.Execute 方法占用资源最多 .

 

 

分享到:
评论

相关推荐

    asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别

    你可以使用下面的代码将用户引导到另一个页面: Response.Redirect(“WebForm2.aspx”) 或者 Response.Redirect(“http://www.cnnas.com/”) Server.Transfer 也是通过一条语句将用户引导到另一页面,比如:Server....

    Microsoft.SQLServer.ManagedDTS.dll文件

    DTSExecResult result = package.Execute(null, null, options, null, null); // 检查执行结果 switch (result) { case DTSExecResult.Success: Console.WriteLine("Package execution completed ...

    【ASP.NET编程知识】ASP.NET MVC页面重定向简单介绍.docx

    本文主要探讨了ASP.NET MVC框架中几种不同的页面重定向方法,包括Response.Redirect、Server.Transfer和Server.Execute,以及如何根据实际需求选择合适的方法。 1. Response.Redirect: Response.Redirect是客户端...

    winform Server.Execute

    "Server.Execute"这个概念通常与ASP.NET相关,而不是WinForm,但在讨论中可能涉及到将ASP.NET的技术应用到WinForm的场景。在这里,我们将会探讨如何在WinForm应用中模拟服务器端执行的功能,以及相关的知识点。 1. ...

    【ASP.NET编程知识】ASP.NET笔记之 Request 、Response 与Server的使用.docx

    ASP.NET 编程知识 - Request, Response 与 Server 的使用 ASP.NET 是一个功能强大且流行的 Web 应用程序开发框架,它提供了许多内置对象和类来帮助开发者快速构建高效、灵活的 Web 应用程序。在 ASP.NET 中,...

    ASP.NET 重定向的几种方法小结

    本文主要总结了三种 ASP.NET 中的重定向方法:Server.Transfer、Server.Execute 和 Response.Redirect。 1. **Server.Transfer方法**: Server.Transfer方法在服务器端执行,它停止当前页面的处理并立即开始处理...

    ASP.NET四种页面导航方式的比较与选择

    在ASP.NET中,常见的四种页面导航方式包括超级链接、Response.Redirect、Server.Transfer和Server.Execute。以下是对这四种方式的详细分析: 1. **超级链接**: 超级链接是最基础的导航方式,通过HTML的`<a>`标签...

    ASP.NET四种页面导航方式之比较与选择

    本文将深入探讨四种主要的页面导航方式:超级链接、Response.Redirect、Server.Transfer和Server.Execute,分析它们的特点、优缺点以及适用场景。 一、超级链接 超级链接是最直观、最基础的页面导航方式。HTML中的`...

    asp.net跳转页面的三种方法比较

    ### ASP.NET中页面跳转的三种方法:Response.Redirect、Server.Transfer与Server.Execute 在ASP.NET开发过程中,页面跳转是一项非常常见的操作。根据不同的应用场景,可以选择不同的方式来实现页面跳转,主要有`...

    ASP.NET跳转页面3种方法比较

    本文将深入探讨ASP.NET中实现页面跳转的三种主要方法:`Response.Redirect`、`Server.Transfer`和`Server.Execute`,并分析它们各自的优缺点及适用场景。 ### 1. Response.Redirect `Response.Redirect`是最常用的...

    asp.net网页跳转七种方法小结

    `Server.Execute`与`Server.Transfer`类似,但它仅执行目标页面的服务器端代码,而不显示其输出。这通常用于执行一些后台处理任务。例如: ```csharp Server.Execute("Default5.aspx?address=beijing"); ``` ### 4...

    C#中所有页面跳转方式

    `Server.Transfer`方法用于在同一个应用程序内跳转页面,它能够在跳转时不重新发送请求,因此可以保持当前会话的状态和数据。 **示例代码**: ```csharp // WebForm1.aspx.cs Server.Transfer("WebForm2.aspx?id=AA...

    Server.Execute方法执行指定的ASP程序

    ### Server.Execute方法执行指定的ASP程序 #### 一、引言 在Web开发领域,特别是使用Active Server Pages (ASP) 进行网站构建时,Server.Execute 方法是一个非常实用的功能。它允许开发者在一个ASP页面中执行另一...

    asp.net(c#)网页跳转七种方法

    Response.Redirect 方法可以将用户从一个页面跳转到另一个页面。这个方法可以在不同的服务器上进行跳转。它可以接受两个参数,第一个参数是要跳转的 URL,第二个参数是一个布尔值,指示是否停止当前页面的执行。 ...

    HttpClient问题:The server failed to respond with a valid HTTP resp

    总的来说,解决"The server failed to respond with a valid HTTP response"的问题,需要从网络、服务器配置、HttpClient配置和代码实现等多个角度进行排查。通过仔细阅读服务器日志,调整HttpClient设置,以及确保...

    C语言与SQLSERVER.docx

    在本文中,我们将深入探讨如何使用C语言与SQL Server 2012进行交互,并结合Navicat和ODBC配置进行数据库操作。首先,我们需要确保安装了所有必要的软件和工具,包括Visual Studio (VS)、SQL Server 2012、Navicat ...

    nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例.docx

    Node.js 基于 mssql 模块连接 SQL Server 数据库的简单封装操作示例 Node.js 是一个基于 JavaScript 的服务器端运行环境,使用 Node.js 可以轻松地连接各种数据库,包括 SQL Server。在本文中,我们将介绍如何使用...

    ASP.NET中的四种导航方式

    本文将详细介绍ASP.NET中常用的四种导航方式:HTML超链接、`Response.Redirect`、`Server.Transfer`以及`Server.Execute`。每种方法都有其独特的应用场景和优缺点。 #### 一、HTML超链接 HTML超链接是最基本的导航...

Global site tag (gtag.js) - Google Analytics