Server.Transfer throws Error executing child request. How to resolve?

拥有回忆 提交于 2019-11-29 05:26:36
Amit

I found an alternative to Server.Transfer()

I used

 HttpContext.Current.RewritePath("somefile.aspx");

This solved the issue.

Karl

I was hooking into the request pipeline in the OnPreRequestHandlerExecute event, and found I couldn't use Server.Transfer because it threw the same error as yours about executing a child request.

Using HttpContext.Current.RewritePath didn't work because it seemed to be ignored and I wasn't redirected anywhere.

If you're using IIS 7 and up, you can use Server.TransferRequest instead which did the trick for me.

The differences between the two methods are covered in this answer: TransferRequest vs Transfer in ASP.Net

My fix was different:

An online query produced this Microsoft Knowledge Base article which stated the resolution would be to use Response.Redirect instead of Server.Transfer.

I changed the command and got a more accurate "404 Error Message" instead of the cryptic "Error executing child request" message.

That led me to inspect the redirect string and I noticed my path was off.

I fixed the Transfer String from "ErrorPage.aspx" to "../ErrorPage.aspx" (notice the path change) and Server.Transfer worked just fine.

If you happen to see this exception occur in the VS.NET IDE during debug, go ahead at least once and press F5 to continue debugging. In my case, the actual page did render with the ASP.NET exception that was really causing the issue. In my case I had an incorrectly formatted asp:ChangePassword control that was actually causing the "Error executing child request" exception.

I changed Server.Transfer for Server.TransferRequest, then I've got the real exception behind. It was a problem with a reference to an incorrect ReportViewer version.

It isn't a bug, it is by design. See http://support.microsoft.com/kb/320439

Server.Transfer("mywebpage.aspx") seems to work only when a session already exists.

If there is no Session started it throws this error so you must use Response.Redirect or another method.

I had this same problem, and discovered it was to do with the relative paths of where the Server.Transfer is running and where you are redirecting to. In my case, this was executing in a sub-directory, so @ray's answer (adding ../ to the start of the URL) worked. However, when I then executed in the directory above, the same thing happened. Therefore, I changed to using a rooted path:

Server.Transfer("~/errorpage.aspx")
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!