23

我已经浏览了下面提到的链接,

iis 论坛HttpModules & Server.Transfer/Server.TransferRequest/RewritePath 的问题。但无法理解这些传输方法背后的概念。

它们是如何工作的?在不同的情况下,哪一种更受欢迎?

有人可以解释一下asp.net中服务器端传输的TransferRequest vs Transfer方法及其角色吗?

提前致谢

4

2 回答 2

27

HttpServerUtility.Transfer终止当前页面的执行并开始执行提供的 URL。这基本上映射并执行与提供的 url 对应的新 ASP.NET 页面(或提供静态文件)。它在当前请求管道中就地执行此操作,无需将新配置应用到新 url,或为新 url 重新运行 IIS 模块。正因为如此,它非常快,但它也阻止了 TRQ 可能出现的许多情况。

HttpServerUtility.TransferRequest对提供的 URL 执行异步执行。这是一个完整的 IIS 子请求,它允许它重新运行新请求的整个请求管道,就好像它是一个单独的请求一样,为其获取正确的配置,并运行所有正常的 IIS 模块,包括身份验证、授权等。例如,IIS 将对新 url 应用授权规则,而不是以前的 url。

于 2013-05-16T12:34:11.280 回答
10

TransferRequest重新运行整个请求管道,就好像它是一个单独的请求一样。这意味着重新应用 IIS 和 ASP.NET 模块;将遵守新 URL 的身份验证和授权规则。请注意,TransferRequest 需要 IIS 7+ 的集成管道模式,并且可以传输到 ASP 页面或 XML 文件等其他资源。

Transfer将执行从一个 ASP 页转移到服务器上的另一个 ASP 页。与 TransferRequest 不同,IIS 和 ASP.NET 不会验证当前用户是否有权查看由 Transfer 方法传递的资源。如果您需要强制重新授权,并且集成管道模式不是一个选项,请调用Redirect而不是 Transfer 方法。重定向触发客户端重定向,以便新请求将受到 IIS 和 ASP.NET 的所有身份验证和授权逻辑。

于 2013-03-30T07:12:41.843 回答