Monday, March 26, 2012

PageRequestManagerServerErrorException error code 12029

We seem to intermittently get a PageRequestManagerServerErrorException with the error code 12029, could someone explain that error code or point to documentation ? This happens on about 1 / 40 requests and the page is nothing special, just a datagrid inside an updatepanel and with a custom progressbar which is just a div with an animated gif that appears on beginRequest and hides on endRequest.

When you see this error is in an alert box from javascript? Are you using the latest and greatest release?

Is this on a form that requires the user to be logged in..it may be could not authenticate error... If you use fiddler and attach to it - it will actually give you the real error message on why it was aborted...if you do the digging...The SCM traps and surpresses alot of the serverside errors (in my opinion)... so when a session expires...unfortunately the ajax error codes do not map to IIS error codes...


I get the same ...

Have a ticker-tape-liek page that updates every 5 seconds .. eventually, teh session expires on teh authenticated page and I get this nasty message.


I get the same ...

Have a ticker-tape-liek page that updates every 5 seconds .. eventually, the session expires on teh authenticated page and I get this nasty message.


So the problem is the session expiring? Can you use sliding experation in forms? So the user will stay there as long as there are requests from that session?

Two solutions for you:

1. One change your web.config to allow for longer sessions - by default I think .Net 2.0 the timeout is 10 minutes (in 1.1 it was 15)

<authentication mode="Forms">
<forms loginUrl="Users_Login.aspx"timeout="555555555"/>
</authentication>

2. If that is an issue - create a IFRAME that loads a blank .aspx page that has the meta tag refresh to like every 10 minutes or something - and embedded it at the bottom of the page and merely add the style: display: none to it (so it doesn't actually show but is still visible...

3. If the ticker is calling back to the server to update the ticker or whatever - change the service you are using to actually also check for authentification (I am not sure how the authentification service works that Ajax has - but I believe the ajax.asp.net sdocumentation site has some examples...(so I don't really call this a solution ...as I have no idea how to implement it...)

The above should help you with your situation...


Hi!

I'm getting the same error, it's happening completely random and i'm sure it's not time out related

Besides any workaround, I think that the best way to solve it would be to be able to know what's error number 12029.

Any of the AJAX developers could clarify this?

Regards,

Juan


Are you using fiddler? You should...It'll tell you what exactly caused the error...there are also a couple of good extensions for firefox that will help debug the issue as well...

Also note that setting compilation debug to true and trace enabled also cause sporadic behavior when it comes to ajax...Also - do a search on the forums here for exception handling - it is possible to track the exception generated by ajax and log it... and there a few forum posts on the procedure for doing this (also code examples on the ajax.asp.net documentation site)...


Jody, thanks for your answer,


- It happens with or without debug=true: i'm testing it with the VS ASPNET server, with IIS 5 and with IIS 6. It happens everywhere and randomly, regardless of the debug setting. And I'm not tracing anywhere.

- I'm already logging the exception into SQL using this:

Protected Sub ScriptManager1_AsyncPostBackError(ByVal sender As Object, ByVal e As Microsoft.Web.UI.AsyncPostBackErrorEventArgs) Handles ScriptManager1.AsyncPostBackError
Dim conn As New SqlConnection
Try
conn.ConnectionString = ConfigurationManager.ConnectionStrings("ApplicationDatabase").ConnectionString
Dim comm As SqlCommand = conn.CreateCommand
comm.CommandText = "AjaxRecordError"
comm.CommandType = CommandType.StoredProcedure
comm.Parameters.AddWithValue("exMessage", e.Exception.Message)
comm.Parameters.AddWithValue("exStack", e.Exception.StackTrace)
comm.Parameters.AddWithValue("exSource", e.Exception.Source)
comm.Parameters.AddWithValue("exServerName", Server.MachineName)
comm.Parameters.AddWithValue("date", DateTime.UtcNow)
comm.Parameters.AddWithValue("ip", Request.UserHostAddress)
conn.Open()
comm.ExecuteNonQuery()
Catch ex As Exception
Finally
conn.Close()
End Try

So, i'm actually tracking the exception, but it isn't very helpful anyway (at least for me! :) ) :

Here is one of the records (which are all the same BTW):

exception.Message = "Input string was not in a correct format."

exception.StackTrace = " at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.Web.UI.WebControls.ImageButton.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.WebControls.ImageButton.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection)
at System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)"

exception.Source = "mscorlib"

I can see from this that is something related with parsing (I think), but as it's happening randomly, without pattern, I can't find where to start looking at.

And, finally, I'm already using Fiddler, but I must admit that I don't know where to dig to help me with the issue.

Any further help would be really appreciated! :)

Juan


Idea here:

Fiddler can be confusing sometimes. It does a take a bit to analyze...The important ones to look at are naturally any 404 errors.. Check the Headers tags when you go clicking through to inpect...

However, - I have found that that with XP - that the number of connections is limited to 10 using the IIS 5 server for XP... This causes issues because at times it doesn't matter how many times you restart IIS or close and open the broswer it doesn't go away sometimes.

I am asuming that you are stating that you are getting these errors from a remote server and not your dev xp machine?

Check your event log under applications:

The following exception was thrown by the web event provider 'EventLogProvider' in the application '/SitesEasyTest' (in an application lifetime a maximum of one exception will be logged per provider instance):

System.Web.HttpException: The EventLogWebEventProvider provider failed to log an event with the error code 0x800705DE.
at System.Web.Management.EventLogWebEventProvider.ProcessEvent(WebBaseEvent eventRaised)
at System.Web.Management.WebBaseEvent.RaiseInternal(WebBaseEvent eventRaised, ArrayList firingRuleInfos, Int32 index0, Int32 index1)

For more information, see Help and Support Center at

Is symbolic of too many connections from one client and events are occuring so rapidly that the application can can not throw any more exceptions due to connection issues...

Another error to check is this one:

Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 11/4/2006 1:25:21 PM
Event time (UTC): 11/4/2006 9:25:21 PM
Event ID: 956e4d1c3b334e5895a42e0f0706badc
Event sequence: 32
Event occurrence: 2
Event detail code: 0

Application information:
Application domain: /LM/W3SVC/1/Root/SitesEasyTest-7-128071478278125000
Trust level: Full
Application Virtual Path: /SitesEasyTest
Application Path: D:\Sites-Easy\Web\
Machine name: SITES-EASY

Process information:
Process ID: 1472
Process name: aspnet_wp.exe
Account name: SITES-EASY\ASPNET

Exception information:
Exception type: NullReferenceException
Exception message: Object reference not set to an instance of an object.

Request information:
Request URL: http://localhost/SitesEasyTest/default.aspx
Request path: /SitesEasyTest/default.aspx
User host address: 127.0.0.1
User:
Is authenticated: False
Authentication Type:
Thread account name: SITES-EASY\ASPNET

Thread information:
Thread ID: 6
Thread account name: SITES-EASY\ASPNET
Is impersonating: False
Stack trace: at Cavalia.SkinHandler.GridViewModal.InitializeSkin(Control skin) in D:\Sites-Easy\Core Modules\Cavalia.SkinHandler\GridViewModal.cs:line 322
at Cavalia.SkinHandler.SkinnedCommunityControl.CreateChildControls() in D:\Sites-Easy\Core Modules\Cavalia.SkinHandler\SkinnedCommunityControl.cs:line 223
at System.Web.UI.Control.EnsureChildControls()
at Cavalia.Admin.EditSectionsDefault.OnLoad(EventArgs e) in D:\Sites-Easy\Admin\Admin\EditSections\EditSectionsDefault.cs:line 244
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)


Custom event details:

For more information, see Help and Support Center at

This one while confusing - when compared to the corresponding SCM error message - is actually that the SCM tried processing a request but the connection was reset yet - it still trys to restablish as another event needs something - such as say image retrieval for rebuilding the page. I had issue as well and it ended up being a image that when the ajax update panel was initialized the first time - all worked well, but then on subsequent requests - the failure on the image always caused the 'Input String of the Format" as the SCM expected a image but instead it got a 404 error page from the server...the page still rendered properly and worked after clicking ok on the error... none theless once I corrected that - I stopped getting the errors..

I think that those developing the SCM should also check the stream incoming and abort on the processing of those kind of messages...depending on the type that the scm is trying to request...

See if any of that helps.. Also - try it with the browser settings not set to Every Time and instead Automatically. If its a connection issue you may find that the issue does stop appearing as in alot of cases - I'll see 30 some requests constantly if say I am loading multiple dynamic controls in say a modal popup or something...


Jody, thanks for your info.

BTW, i;m getting this errors from BOTH my local dev machine with WIn XP and from the remote staging server with Windows Server 2000 R2.

It's interesting what you say about images, because my error is happening after refreshing a GridView that's inside an UpdatePanel, and this GridView contains a lot of templated columns with graphics.

Also, after clicking "ok" on the javascript alert the page just renders fine and you are know until the next random error happens.

I think it's worthwhile to try into that direction, before something else. Could you please share with me the solution you've used to correct that?. I know that in the AJAX documentation there is information about how to handle custom errors, but it involves writing javascript, on which i'm not very good. I just want to "clear" the error and not display an alert conditioned to if the error is of type "Input String of the Format"

Regards,

Juan


<authentication mode="Forms">
<forms loginUrl="Users_Login.aspx"timeout="555555555"/>
</authentication>

AH!! Then any hit to the website will create a session that will use memory for ever, if I create a program that hits the website every second in less than an hour the garbage collection will be kicking in!Stick out tongue


<authentication mode="Forms">
<forms loginUrl="Users_Login.aspx"timeout="555555555"/>
</authentication>

AH!! Then any hit to the website will create a session that will usememory for ever, if I create a program that hits the website everysecond in less than an hour the garbage collection will be kicking in!Stick out tongue

Actually - you are incorrect - the session will not remain in memory forever on the server side... it merely means that the authentification cookie is not expired...and therefore continuous checks are not made if the cookie is valid... therefore when the authentification occurs it doesn't actually have to do the whole process... the timeout period merely says keep the authentication cookie valid for x period of time... If your case was correct - sites like this would either a billion servers or constantly crash...Sever side - it would not matter a session is a session...it will be created regardless - the server side session management still purges inactive sessions from memory on regular basis - all the timeout value does is instruct that if the user connects again - don't destroy the cookie when re-authenticating and consider it valid instead...and use what is stored instead of going through the whole process of reconstruction...

See this article for more info on this...


Don't quote me on this as my memory is foggy on Windows 2000. Windows 2000 actually has a connection limit per client / machine. There is a registry change you can do to increase this...however, it does expose a security risk so modify with caution .. I'll give you reference to this doc:download.microsoft.com/download/2/8/0/2800a518-7ac6-4aac-bd85-74d2c52e1ec6/tuning.doc

As for how I fixed my issue... I fixed all of the urls for the images...

I'll give you a caveat however... if you use a dynamic site structure... one of two of these observations may be relevant to you.

1. With dynamic sites - in some cases the urls being requested are mapped to the root url of the site and not the actual dynamic url that should be generated - So, I fixed that code in the toolkit and recompiled. That solved half of my problems... (See my blog entry titled "Bizzarre"... how ever - if you are using master pages and all that then it won't be relevant to you...

2. I had and still have had issues with dynamically generating url paths when a SCM is on the page.

For instance - I rely heavily on this kind of syntax: ImageUr l= '<%# ResolveUrl("~/Images/admin/collapse.jpg")%>'

It generates the actual physical path to the image. It doesn't work in a page with a SCM..(although does everywhere else) So I have to resort to defining the imageurl in codebehind - which does work...And this goes for the Gridview. Defining images statically (int the ascx or aspx page) works but not if some kind of dynamic generation in the aspx or ascx page...but if you do it codebehind - it works...

So correcting both of those issues resolved my issue (keep in mind that each request for a image is actually a separate connection to the server)...

For suppressing the error message and 'pretending it didn't happen on the client side..... there is a great example on the docs site...

So, hopefully that will help...

No comments:

Post a Comment