如何从 HttpServerUtility.TransferRequest 修复 "A virtual path is expected"?

How to fix "A virtual path is expected" from HttpServerUtility.TransferRequest?

在派生自 System.Web.Mvc.ActionResult 的自定义 class 中,我有以下代码行:

HttpContext.Current.Server.TransferRequest(myUrl, true);

在大多数情况下,这都能正常工作。但偶尔,它会因错误而失败:

Uncaught error in MVC Controller
ArgumentException: Invalid path for child request 'http://[...]'. A virtual path is expected.

我该如何解决这个错误?

如错误消息的最后一部分所述,问题是 URL 参数被传递给 TransferRequest 方法。

该方法需要一个相对路径,而不是包含域的绝对路径 URL。比如这个参数就可以:

"/Search.aspx"

这个参数会导致错误:

"http://example.com/Search.aspx"