`

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

 
阅读更多

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。

4.
erver.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....

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

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

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

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

    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...

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

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

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

    2.Server.Transfer 方法 Server.Transfer 方法可以将用户从一个页面跳转到另一个页面,但是这两个页面必须在同一个服务器上。这个方法可以保留表单数据和查询字符串。 Server.Transfer("Default2.aspx?name=...

    ASP.NET中的四种导航方式

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

    C#跳转网页7种方法

    1. **Response.Redirect**: `Response.Redirect("http://www.jb51.net", false);` 这种方法适用于目标页面可能位于不同服务器的情况,可以接受URL或相对路径。`false`参数表示是否停止执行当前页。Response....

    ASP.NET页面跳转

    ### ASP.NET 页面跳转的详细解析与应用 ...无论是服务器端的`Response.Redirect()`和`Server.Transfer()`,还是客户端的`<a>`标签和JavaScript,理解并熟练掌握这些技术,对于构建高质量的ASP.NET应用至关重要。

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

    下面将详细介绍ASP.NET中三种主要的页面跳转方法:Response.Redirect、Server.Execute和Server.Transfer。 1. Response.Redirect Response.Redirect是最常用的页面跳转方式,它通过向浏览器发送一个HTTP 302重定向...

    ASP.NET(c#)网页跳转七种方法小结

    本文将详细介绍七种实现网页跳转的方法,包括`Response.Redirect`、`Server.Execute`、`Server.Transfer`以及其他四种方法。通过对比它们的特点、适用场景以及示例代码,帮助开发者更好地理解和应用这些技术。 ####...

Global site tag (gtag.js) - Google Analytics