Server.Execute to a form, Response.Redirect back. The View State is invalid for this page and might be corrupted

I'm using Server.Execute to process a second web form
    System.IO.StringWriter swrTarget = new System.IO.StringWriter();
    Server.Execute("WebForm2.aspx",swrTarget);
This brings up the second form just fine.

Then I use a button to return to the 1st form
            Response.Redirect("WebForm1.aspx");

When I do so, I get "The View State is invalid for this page and might be corrupted."
[HttpException (0x80004005): The View State is invalid for this page and might be corrupted.]
   System.Web.UI.Page.LoadPageStateFromPersistenceMedium()
   System.Web.UI.Page.LoadPageViewState()
   System.Web.UI.Page.ProcessRequestMain()

Both forms have EnableViewStateMac="false" in their aspx.  The second form does a Response.Write, but commenting it out does not fix the problem.  WebForm1 and WebForm2 are the correct case-sensitive names.  This is a very simple program -- I'm studying the Microsoft MCAD/MCSD book (Chapter 4, Lesson 3).  

I'm stuck.  Can someone help?

Thank you.
LVL 13
josgoodAsked:
Who is Participating?
 
Bob LearnedCommented:
The Execute Method:
http://www.w3schools.com/asp/met_execute.asp

The Execute method executes an ASP file from inside another ASP file. After executing the called .asp file, the control is returned to the original .asp file.

Bob

0
 
Bob LearnedCommented:
With Server.Execute the page executes like a subroutine.  If you want control to pass to the new form, use Server.Transfer instead.

Bob
0
 
b1xml2Commented:
Response.Redirect is just telling the client browser to load the page from scratch, so no form elements are posted, therefore, no ViewState is to be reconstructed as there is no postback occurring.

something else is happening.,
0
 
josgoodAuthor Commented:
Thank you, Bob.  That's a good distinction to make.

To me, it seems that Server.Execute is more like starting another thread.  The Server.Execute returns immediately -- it does not wait for the new form to open, be processed, and then close.  Both the initial and second pages are active.

I'm using Server.Execute because that's what the book is covering in the section I'm reading.
0
 
josgoodAuthor Commented:
I just looked at the link provided by The Learned One.  That told me exactly what I needed to do to debug this problem -- Response.Write in both forms.  Just like using printf in the old days.

If I change
    Server.Execute("WebForm2.aspx",swrTarget);
to
    Server.Execute("WebForm2.aspx");
then everything works great!

Don't know what the swrTarget is a problem, but that's another question.

Thank you for providing the way to find the solution, Bob.  That's much more valuable than just the answer!  Full marks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.