Getting 'Webform_Postbackoptions is undefined’ errors in ASP.NET 2.0
Issue
====
I recently got an issue where customer ASP.NET 2.0 website on IIS and on one of the aspx pages he was using RangeValidator control. Browsing to that aspx page was giving client side Java script errors ‘Webform_Postbackoptions is undefined’. Without RangeValidator application was just working fine.
Cause
====
WebResources.axd was not getting downloaded to ‘Temporary Internet Files’ folder. Fiddler showed 500 Status forthe WebResources.axd. IIS Logs showed nothing in my case. When directly browsed to this file it gave errors in one of the events called AcquireRequestState in Global.asax file sitting under App_Code directory. Error was related to session state because an AXD file doesn’t have any session state handler associated.
Resolution
=======
Commented out AcquireRequestState event and now webresources.axd is successfully downloading in ‘Temporary Internet Files’ folder.
Note:- Fiddler tool can be downloaded from https://www.fiddlertool.com/dl/FiddlerSetup.exe. It's a great tool to troubleshoot client side issues.
Comments
- Anonymous
February 08, 2006
Hi Parag
Thanks for this help.
I did have same problem, I hope I will get solution fromt this tool.
Thanks again.
Raj Gohil - Anonymous
February 14, 2006
I am glad somebody has addressed this issue. If I comment out AcquireRequestState the javascript error goes away, but when I uncomment the event it continues to be broken. Obviously this will not work for me because I need that event. Do you have any idea how to resolve this issue? Any help would be appreciated. - Anonymous
March 01, 2006
Hi, this may help to answer your issue:
http://www.ben-rush.net/blog/PermaLink,guid,2fe91872-e782-4a8d-9085-fe8a01723bcc.aspx - Anonymous
March 02, 2006
In which file and where I could find it. - Anonymous
April 02, 2006
http://www.ben-rush.net/blog/PermaLink,guid,2fe91872-e782-4a8d-9085-fe8a01723bcc.aspx helps quite a lot and Parag thanks for listing the bug - Anonymous
April 16, 2006
You may solve this problem by execluding HttpHandler from processing AcquireRequestState as follows:
protected void Application_AcquireRequestState(object sender,
EventArgs e)
{
// Use regular expressions to
// extract file name from file path.
string sFileName = Regex.Replace(Request.FilePath,
@"./(.)", "$1").ToLower();
// Only access session object if the
// file is not an HttpHandler
if (!sFileName.Contains(".axd"))
{
// Here, you can access Session variables safely
Session["Whatever_variable"] = "any_value";
}
}
Hope this clarifies the idea.
Suwaiyan - Anonymous
July 10, 2006
Hi Parag,
I don't have AcquireRequestState event in my Global.asax page. Could you please help me on this issue. I am also getting same issue in my Login Screen.
Mayank - Anonymous
July 11, 2006
When you open your Global.asax, look at the top of the text editor, you will find a drop down list with some options in it. Select Application option. Then notice that the other drop down list (which is next to first one) contains all possible events which you may create. Just select Application_AcquireRequestState event, and the editor will automatically generate the menthod and signature for you. Rest is copying the code above. - Anonymous
July 11, 2006
It could be possible that webresource.axd file is not getting downloaded on the client. Try installing fiddler (http://www.fiddlertool.com/dl/FiddlerSetup.exe) on the client and check the status for webresource.axd file. - Anonymous
July 13, 2006
Our "not downloading" of that file was in the global.asax, but it was in the code example below. In the Application_PreRequestHandlerExecute we were using sessions, but we had to add the if() to see if Session itself was null. If it is, then "return;"
Works like a charm :)
-------------------------------------
protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e)
{
if(HttpContext.Current.Session == null)
{
return;
}
else
{
/// OUR CODE IN HERE
} - Anonymous
July 27, 2006
Thank you. Your solution gave me a hint as to the source of my problem. I also could not receive the WebResource.axd file when requesting it from the web server, but I received the familiar "Server Application Unavailable" message. We use a custom HttpHandler and a unique file extension in our application, and this extension was the only one mapped to ASP.NET 2.0. The others were mapped to the ASP.NET 1.1 ISAPI DLL, which causes the above error in IIS 6.0 because it cannot load two version of .NET in the same application pool. - Anonymous
July 27, 2006
You are correct. asp.net 1.1 & 2.0 applications should not run under same application pool. For more information please visit,
PRB: "HTTP/1.1 500 Internal Server Error" Error Message When You Have Multiple ASP.NET Applications That Use the Same Application Pool with Different Script-Mapped Versions
http://support.microsoft.com/?id=822319 - Anonymous
June 09, 2007
So far... I have seen several different cause and effect's for this:
- One article mentions the aspnet_client missing, with steps to run the aspnet_reg with the -c option. This option seems to have worked for many.
- Another article (linked here) recommends to delete the browser cache and try again. This seems to have worked for some.
- Another article discusses older framework versions used by referenced .dll's could be causing the problem (server side) and preventing the creation of the WebResources.axd file
- Another article discusses where a "null" session variable which is expected during processing of the global.asax file causes and error and (similarly), prevents the Webresource.axd file from being created. I can find many articles about it, or at least regarding the topic, but nothing concrete or thorough enough to fully explain the root cause, how to resolve it, and how to prevent it.... perhaps I am using the incorrect search string to hunt for the answer.
- Anonymous
November 22, 2010
Hi, My problem gets solved........ Just change the server date to Next month date, Close IE (Internet Explorer), Restart IIS and check the error page. .. again i set current date and continue to work.