我知道他们都不会更改客户端看到的URL.是否有任何东西使其中一个优于另一个?
我打算在Global.asax的Application_BeginRequest中使用它,也可以在常规的aspx页面中使用它.
我认为Context.RewritePath()
是更好的选择.原因:
Server.Transfer()
ThreadAbortException
每次都抛出一个.打电话的结果Response.End()
.
有关更多详细信息,请阅读以下MS文章:
如果您使用Response.End,Response.Redirect或Server.Transfer,则会发生ThreadAbortException
MSDN上的HttpServerUtility.Transfer方法
更多信息:
Server.Transfer()
不会发送HTTP 302重定向命令Response.Redirect()
.
根据MSDN上的HttpContext.RewritePath,RewritePath()
用于无cookie会话状态.
此外,在不同的主题上,Server.Transfer()
并且Server.Execute()
是非常不同的:
Server.Execute()
在调用它之后立即将控制权返回到初始页面.
例如:
test 1
<% Server.Execute("include.aspx?hello=ok"); %> test 2
输出:
测试1
include.aspx的内容?hello = ok
test 2