I'm having a problem showing detailed errors for classic ASP pages. Initially it just showed default 500 error page, we then followed the instructions here
but now it only shows:
An error occurred on the server when
processing the URL. Please contact the
system administrator.
Any ideas?
Inside IIS, select ASP, and then change Send errors to browser to Yes
alt text http://img198.imageshack.us/img198/6749/capturets.png
Eduardo, we did have Send Errors To Browser set to True for the website. I believe a parent setting was overriding this. When updating the parents value it corrected the problem.
Related
I've set up a new Windows 2012 R2 server running IIS 8.5.
We noticed that when an error occurs (eg the ASP.NET State Service was not running) that instead of outputting a 500 status code error screen, the request actually returns a totally blank page (only headers - with no content). We obviously need to see the errors and serving 200 OK for an error could be very problematic for indexers like Google etc or any wesite monitoring tools (which would not notify us that the site had gone offline).
On our other servers (IIS 7) we see the "yellow error screen" with a message like "could not connect to state server" (or similar).
What could possibly be wrong here? Is there some setting to globablly disable all errors (but this would be stupid if it also serves the 200 status code) or could something else be getting in the way?
The only other thing which could be interfering is we've got ISAPI_Rewrite installed on the server (but this doesn't usually cause this problem).
Thanks!
Had a similar issue on Windows 8.
In settings search for "Turn Windows features on or off".
Check that the following features are enabled
"/Internet Information Services/World Wide Web Services/Common HTTP Features/HTTP Errors".
"/Internet Information Services/World Wide Web Services/Common HTTP Features/Static Content".
You need to ensure Server Side Debugging is not enabled in the ASP module.
Classic ASP server 500 errors are returned as 200's. An attempt is made at opening the Server Side Debug Application, that then can't be found and IIS subsequently returns a 200 response and a blank page.
Make sure that you are not calling Server.ClearError() in Application_Error of Global.asax.cs that ended up being my problem.
Ripping out all Global.asax code helped me to find the cause of the error.
After that, the IIS started to return the error page as expected. Then, after the fix is applied, I returned the Global.asax code back.
Maybe this case helps you.
I had a similar issue when requesting the Default.aspx (set as page default in directory). The Server returned status 200, but the Content was blank.
In this case it worked to switch the Application pool's managed pipeline mode from integrated to classic.
Make sure you have enabled HTTP Activation
I'm trying to setup a classic ASP page to log errors by redirecting the errors to error page that has logging enabled. When the site was migrated from IIS6 to IIS7 the logging stopped working as the details of the errors are not included in the redirect.
I have been able to fix this issues somewhat by going to the site in IIS Manager, going to that sites Error Pages, Clicking Edit Feature Settings, and Changing that option to Detailed errors for local requests, setting my default path to the error page, and changing the path type to execute URL. In order to do this I had to edit the apphost.config and remove some of the locks that are in place there.
Now when I go to other sites on my IIS the same default page path is set on those too. can someone please point me to some documentation or tell me how to make this change only for this particular site?
TO do the error page per Website Deployed in the IIS you need to click on individual website and then on right hand side click on Error Pages and select the Page.
My problem ended up that I was editing my applicationHost.config which would seem like a reasonable solution, but alas it was not. Changing that XML seems to have no effect on what the IIS manager would allow me to do. I finally went into the Configuration Editor for the root of IIS and edited the same settings there, which actually had some effect. All that I had to do at that point was remove the attribute lock on default path and the then I was able to edit my site. I have no idea why changing the application host did not have any effect. I would make the change and when I finally looked in the settings in the IIS manager, nothing I had done was changed at all... FYI this is IIS 7.5 on Win7
Hope this helps someone else.
We are in the process of migrating an ASP Classic/ASP.NET application from IIS 6 to IIS 7.5. Most things run just fine in classic mode but we are having alot of problems with how errors are handled by IIS 7.5. We do our error reporting using a classic ASP page where we capture the error information here then redirect to a page to display the error. Based on our testing both Server.GetLastError and Request.ServerVariables("SCRIPT_NAME") when accessed from the logging page do not return the error details and source. Are there other ways we should retrieve the error information on IIS 7.5 or perform the logging?
In case this helps, using freb we have noticed that IIS appears to generate a completely new request then begins executing our error capturing.
Thanks in advance.
#smaclell: See http://dylanbeattie.blogspot.com/2008/12/fun-with-servergetlasterror-in-classic.html for a potential solution for you.
Here's the relevant paragraph from the article:
There was a very similar known bug in Vista which was supposedly fixed
in SP1, but it looks like the same fix isn't part of Windows 2008
Server yet. There is a workaround, though - if you set the site's
default error property (under IIS settings -> Error Pages -> Edit
Feature Settings...) to the custom page, IIS will invoke
this page whenever an error is not handled by an explicitly configured
status-code handler (so your 404, etc. handlers will still work) - but
for some reason, handling the error this way means
Server.GetLastError() still works properly.
I have created one test.aspx and my local machine it is working fine. Once I upload the same to server the page is not working. It's showing
500 - Internal server error. There is a problem with the resource you
are looking for, and it cannot be displayed.
It is impossible to help you without getting more info about the IIS configuration on your local machine and the server.
However, here's a quick stab of some things you should look at:
Check if Asp.net is installed on the server.
Make sure your app is targeting the proper .Net version that is on the server.
Check if all the assemblies your code is using are deployed correctly on the IIS server.
Add some exception handling and error logging to your code.
In particular, I'd venture to make a wild guess that your page is using some code that requires the IIS7 integrated pipeline and your server is either running IIS6 or is running IIS7 in classic mode. Though this is a stab in the dark and could turn out to be completely wrong. :-)
500 server errors are as useful as saying 'something broke'. They are the result of literally any exception you code throws plus anything else IIS croaks on. From your error msg, it sounds like an IIS config issue but it could still be your code. attaching a debugger to it would eliminate that possibility.
If you haven't looked at the server event log you can see if it registered anything.
There are a number of things that you can do to try to get a better, more specific exception. One way I try to diagnose them is to connect a remote debugger so I can see what's going on. If you have access to do so, I'd go that route.
You will need admin access to the server to install the Visual Studio remote debugging client (I'm assuming this is a .net app).
Another thing that can help are try/catch blocks and logging to a file or the event log--but have have to change your app most likely to implement that.
You have probably forgotten to upload the associated .dll. Have you tried right clicking on the project and using the publish feature?
If you are using IE, then you also need to turn off the "Show friendly error messages" option in Tools - Options - Advanced settings so that you get more details.
You may also need to change the web.config file so that error message details are shown, see the CustomErrors tag.
We have an old system running on a WinServer2003 R2 - IIS6 and it was written using classic ASP.
We need to trap all errors and for that, I configured IIS to redirect 404s and 500s to a custom page (custom errors config) that writes the info to a log file (this page creates and manages the logs).
Here is the weird thing: The first time the error occurs, the page is redirected and I get my log file entry. But, if this page is loaded again (I hit F5, or other user goes there, etc), the browser receives a blank page: no error message and my custom page is ever called.
If I restart IIS6 I get the same behavior, first time it works, next not.
-> Send ASP errors to browser is turned on
-> Show friendly http errors is turned off in my explorer
Any thoughts?
You need to ensure Server Side Debugging is not enabled in the ASP module.
Classic ASP server 500 errors are returned as 200's. An attempt is made at opening the Server Side Debug Application, that then can't be found and IIS subsequently returns a 200 response.
Try doing this while running Fiddler ( http://www.fiddlertool.com/Fiddler2/version.asp ) or some other tool that makes it possible to see what's being sent here and there.
Also; if you set IIS to log in the IIS log format, errors will show up in the log file at the very end of the line for the request that ended in error.
maybe its this issue
http://www.webdevbros.net/2006/11/26/ie7-bug-blank-page-white-screen-after-some-refreshs/