我已经通过下面提到的链接了,
IIS论坛和的HttpModules和Server.Transfer的/ Server.TransferRequest / RewritePath问题 。 但无法赶上这些转移方法背后的概念。
他们如何工作的? 哪一个在不同情况下的首选?
有人可以解释我TransferRequest VS传输方法在asp.net和其角色服务器端转移?
提前致谢
我已经通过下面提到的链接了,
IIS论坛和的HttpModules和Server.Transfer的/ Server.TransferRequest / RewritePath问题 。 但无法赶上这些转移方法背后的概念。
他们如何工作的? 哪一个在不同情况下的首选?
有人可以解释我TransferRequest VS传输方法在asp.net和其角色服务器端转移?
提前致谢
HttpServerUtility.Transfer
终止当前页的执行,并开始提供URL的执行。 这基本上映射并执行了新的ASP.NET页面(或提供静态文件)与提供的网址。 它在当前请求管道这个原地的,而不应用新的配置到新的URL,或为新的网址重新运行IIS模块。 正因为如此,它的速度非常快,但它也防止了很多的是可能的关税配额的情况。
HttpServerUtility.TransferRequest
执行所提供的URL的异步执行。 这是在幕后一个完整的IIS子请求,这使得它能够重新运行了新的要求,整个请求管道,如果它是一个单独的请求,得到正确的配置了,运行一切正常,IIS模块,包括身份验证,授权等。例如,IIS将应用授权规则的新的URL,而不是以前的网址。
TransferRequest就好像它是一个单独的请求重新运行整个请求管道。 这意味着,IIS和ASP.NET模块重新应用; 新URL的身份验证和授权规则将得到尊重。 需要注意的是TransferRequest需要IIS 7+的综合管线模式,传输可以是一个ASP页面或类似的XML文件的另一个资源。
转移从一个ASP页面执行转移到另一个ASP页面的服务器上。 不像TransferRequest,IIS和ASP.NET将无法验证当前用户被授权查看由Transfer方法提供的资源。 如果您需要强制再次授权,并集成管道模式是不是一种选择,呼叫重定向 ,而不是Transfer方法。 重定向触发客户端重定向,使得新的请求将经受IIS和ASP.NET的所有认证和授权逻辑。