Why do I get non-database-related 80004005 errors?
Here is a verbose collection of information surrounding 80004005 errors that have nothing to do with a database. If your 80004005 error involves a database, please see Article #2009.
Luckily, most 80004005 errors that are not database-related are trivial to fix, though a few are a but more tricky than that...
If there is no message associated with the error, there is at least one possible culprit: you tried to assign a negative value to Server.ScriptTimeout. Make sure you pass Server.ScriptTimeout a value between 1 and 2^32-1 (see Article #2066).
This is not usually about physical memory -- Article #2196 has some information about this error. In addition, if you are getting this error when trying to connect to Project 2000 Server, make sure you are connecting to the root (e.g. http://srvName/ProjectServer/) as opposed to trying to connect directly to a file in one of the sub-folders.
This error message is covered quite extensively in Article #2383.
If this is coming from use of MSXML.ServerXMLHTTP, see Article #2391.
This can be caused by passing an undeclared variable into Request.Form or Request.Querystring, e.g.
To correct, make sure your str variable is defined and populated with a valid incoming form variable (and make sure you use the correct collection).
This can happen if you have a function in a VB or C++ DLL that is expecting an INT or LONG value, and you accidentally pass a string. Check your argument(s) and make sure they match the datatypes that the component is expecting. If you debug using response.write, you may see a value that *looks* numeric but you should always be sure by using CInt(), CLng() or CDbl().
If you are running your own file upload handler in Windows Server 2003, this error probably occurs on this line:
If so, you need to increase the setting for AspMaxRequestEntityAllowed to allow larger files to be handled by the Request object. Look for this setting in metabase.xml; the default is 204,800 (200 kb), but you can change it to reflect your expected usage. You will need to restart IIS for this change to take place, unless "enable direct metabase edit" is enabled.
This can also happen in certain scenarios when using code like the following:
Always specify explicitly which collection you are retrieving data from. See Article #2111 for more information.
If you are running COntent Management Server on Windows Server 2003, see CMS SP1 Documentation.
This is often caused by using a numeric argument in Request.QueryString or Request.Form, without checking that such an index exists. For example:
At the line where this error is happening, response.write the index you are passing to the array or structure. It should be clear that this number is either null or outside the dimensions of the array. For more information on iterating through a form collection by numeric index, see Article #2036.
Each form field is limited to 102kb (according to KB #273482)... for a verbose workaround, see Post large form data to ASP - Request.Fo.... Or, use client-side validation to prevent submission of more than 102,399 characters in a single textarea.
See Article #2366 for a discussion of this error message.
You have somehow embedded an opening script tag (<%) without closing it. A simple method to reproduce is as follows:
If your code is really complex and you can't find the offending tag, start at line 2 and move a response.end statement down one line at a time until you find it.
You probably did this:
Without ever closing the tag. You may even have done this:
Notice the missing close brace (>)... it might have been accidentally carriage-returned to the next line.
Similar to the above case, you either forgot to close your object tag at all, or left off the trailing close brace (>), e.g.:
This error is self-explanatory. You have some variation of the following:
Of course, you need to tell ASP the ProgID or ClassID of the object you want to use, otherwise it will have no idea which object to create.
You probably have one of these:
If you are mixing server- and client-side scripts and/or objects, keep in mind that you only have to specify the RUNAT property for those you wish to be interpreted server-side. Since client-side is the default, just leave the RUNAT attribute out altogether.
Again, this error is self-explanatory. Such elements need to have an ID associated with them, so that you can actually refer to it later to call methods and properties (I prefer set foo = CreateObject("Prog.ID"), personally). So your existing code probably looks like this:
Just give it an ID, as follows:
You have a block of code that looks like this:
You need to specify the language. If you mean to use the default language, use <%%> delimiters instead. See Article #2045 for information on how switching languages, and even delimiter style, can affect the way your script executes.
This is another helpful error message. Check the line the error points to, and see if there are any attribute values that have a missing trailing double-quote, e.g.:
To fix, either remove the leading double-quote, or add a trailing double-quote.
This is usually a simple error to fix... either you spelled the filename incorrectly, pointed to the wrong folder, or used #include virtual instead of #include file (or vice-versa).
Look for code like this in your ASP script:
Make sure your comments and include directives are closed correctly, using -->.
This can happen if you use code like this:
It should either be:
You are attempting to use a language that is not installed, e.g. PerlScript. Make sure that you have installed all dependencies for running a specific host language in your ASP scripts.
See Article #2412 for a decription and resolution of these error messages.
Usually, this is due to using a ProgID or ClassID that isn't properly registered on the system. For more information about this error, see Article #2134.
This can happen if you try to use the default global.asa that ships with IIS 5.1 on Windows XP. XP doesn't ship with the MSWC.MyInfo object by default, so the best solution is to rename the global.asa so it stops causing problems. In the default web root, you really don't need a global.asa anyway... and if you do, it should be a lot more barebones than that one.
Like the error suggests, an #include file is being included by itself somehow. While it may not contain an #include reference to itself, it may include a file that does. This may take a while to find; if so, it may be a hint that you need to simplify your include structure.
You are using an <OBJECT> tag and gave it an ID=Response or ID=Application. Make sure you avoid using intrinsic names (others are Server, Session, and Request). You should also avoid using VBScript keywords like for, e.g. the following code will error in two places, depending on which is first:
The first line will result in this error:
The second line will result in this error:
You cannot place <% ' code %> within global.asa. Any code that executes within global.asa must do so within one of the four functions mentioned in the error message.
This is a problem with the preprocessor, and can happen with the following code -- which uses ASP to generate client-side script:
To work around this, you can either (a) use <%%> delimiters for the server-side script, or (b) break up the client-side tag as follows:
For more information, see Article #2294.
Again, a self-explanatory error message. Make sure you haven't done this:
Like the error states, you can't place an @ directive tag after any other content in an ASP page.
This error means just what it sounds like; you should only have one @ directive in any ASP page. You should check any includes, if you only see one @ symbol in the base page. This is probably due to including two files that both use @language or other @ directives, but it is possible that you have two directives in the same page. It is also possible that you "need" two @ directives, for example if you need to specify a language and a codepage. You can work around this by using <script runat=server> and/or session.LCID syntax. See KB #307190 for more info.
This can have something to do with the permissions of the anonymous user account (IUSR) — see KB #210842. You can also try unloading the application and reloading it, changing the memory settings (e.g. isolated vs. shared) or application pool, and finally rebooting the box.
You can't use response.redirect or response.cookies after sending any HTML content to the browser, unless you have enabled response.buffer = true. For more information, see Article #2011 and Article #2217. This error can also happen if you write HTML content to the browser before setting a response. property, e.g.:
If you have enabled buffering at the site/application level, you can not disable it at page scope. See Article #2262 for more information.
See Article #2375 for more information on this specific error message.
This can happen if you have disabled buffering and try to use buffer-dependent methods such as response.clear() or response.flush(). See Article #2262 for information about enabling buffering at the site / application level.
Session.timeout has a maximum of 1440 minutes (24 hours); if you specify a greater timeout value that this, you will receive the above error (see KB #233477). Why would you want such a long timeout anyway? Do you really expect people to be idle for 23 hours, and then pick up where they left off?
Keeping in mind that Request.QueryString objects are objects, make sure to get the value of the object instead:
This error message is pretty self-explanatory. You have used server.mappath() but you have either not passed it a value or the variable you passed did not contain the value you expected. Debug the line that is causing the error by changing this:
Like the error says, you can only use relative paths with Server.MapPath, since the purpose of the function is to generate a local/physical path from a web structure. So, if you have the physical path already, don't bother calling Server.MapPath().
This error message is discussed at length in Article #2302.
If you are trying to give a reference to a file in a parent folder, you might have to work around this problem by using a path relative from the root, rather than relative to the current folder.
Check that the path you are passing into the MapPath method makes sense. Try to use a path relative to the root.
See KB #179406 for information about this error.
This error message is discussed in Article #2171.
See Article #2053 for several links on the limitations of components written using the apartment model, and see KB #822828. If you are using MSWC.BrowserType, see KB #194397 — however, I do not agree with the workaround recommended in the article. Create and destroy objects per page, as you need them.
This can happen if you try to specify an LCID / CodePage that your system isn't set up to handle, e.g. on a default install:
To fix, either use a different LCID, or you will need to install support for far east languages (in the case of Japan) or whatever codepage you need to use (e.g. support for right-to-left languages, if you need to support Arabic or Indian), through the "regional settings" applet in the control panel. Here is where these options live in Windows Server 2003:
You can also download additional language support if you need to use a language that your system doesn't currently support. For more information, see KB #261247.
When you are uploading files, you need to use a different mechanism to get the text from any 'regular' form controls. See Article #2166 for more information.
This can happen if you reference an application- or session-level object in application_onEnd or session_onEnd, and the object no longer exists. You should peruse the links in Article #2053 to see why you should rarely be using any type of object in application or session scope.
You might have something along these lines:
As the error states, the only valid scope values are Page, Session and Application. However, it is very rare that you would be creating an object for application or session scope (see Article #2053), and since the default is page, you won't normally need to include the scope attribute in your object tags at all.
If <text> is:
It is likely that you attempted this:
The SCRIPT keyword is redundant here. Your tag should look like this:
It is likely that you attempted this:
The runat option is unnecessary in an <%@ %> directive, because the tag is already interpreted only in server-side script. The runat=server option only belongs in a server-side script defined with the following syntax:
You are attempting to use VB.Net in an ASP page. You should be using an ASP.NET page, with an ASPX extension.
Double-check your METADATA tags in global.asa -- one of them points to an invalid file or ProgID. For valid METADATA tags to load TypeLibs for various MDAC versions, see Article #2112.
Check the URL that you are passing to the transfer or execute method. Make sure it is a relative URL, and that you can hit it with a browser. Response.Write a Server.MapPath on the value you are passing, and make sure it produces a valid local path.
With Server.Transfer and Server.Execute, you cannot pass absolute (e.g. http://url/ or c:\file\) URLs, nor can you pass querystrings. The target page will have access to values from the Request collections, and there are workarounds described in Article #2030. If you are meaning to execute a page on a different server, see Article #2173 for a small tutorial on using the XMLHTTP object.
This can happen when you try and implement the following code:
The following syntax doesn't choke, but the #include file does not execute.
There is no reason to put the #include directive inside an existing ASP code block.
You are probably including a METADATA tag for XML in the following format:
Note the following change, which should alleviate the error:
However a more appropriate fix would be to install / use a more recent version of the XML SDK.
Check your METADATA tag, it is either missing the PROGID attribute entirely, or it is empty.
Make sure you have installed language support for the language you want to use, and that you have correctly set the Session.LCID or Session.Codepage to the appropriate value. See KB #245000 for more information.
For a lengthy discussion of these error messages, see Article #2355.
Sounds like another case of a malformed METADATA tag. Check your syntax and double-check it against the source.
This means you tried to build a very, very, very large string or tried to write a whole lot of data using Response.Write. If you are returning data to the screen in a loop, make sure you put Response.Clear() somewhere in your iteration. And don't try to build an entire web page of data and store it in a single variable.
If you know of any other 80004005 errors that we haven't covered here, please let us know...
Related ArticlesCan I bypass the ten connection limitation in Workstation / Professional?
Can I compact / repair an Access database from ASP code?
Can I create an array's size dynamically?
Can I detect the presence of ActiveX controls, like Flash, from ASP?
Can I dictate the load order of files on the client from ASP?
Can I have optional parameters to my subs / functions?
Can I host multiple sites in 2000 Workstation or XP Professional (e.g. PWS)?
Can I mimic trim / ltrim / rtrim in JScript?
Can I perform simple encryption / decryption in ASP?
Can I run IIS 5.0 / ASP 3.0 on Windows NT 4.0 or Windows 9x?
Can I run IIS on Windows Millennium or Windows XP Home?
Can I use IP address to uniquely identify visitors?
Does order matter when using different languages in ASP?
How can I give them a better 404 message?
How can I stop Photoshop from opening ASP files?
How can I track when my site is added to a user's favorites?
How do I access all active sessions on the server?
How do I access my server's registry from an ASP page?
How do I change a list into a set of table rows and columns?
How do I change document names / extensions in IIS / PWS?
How do I change the default server scripting language in InterDev?
How do I cloak / hide URL and QueryString information?
How do I comment blocks of ASP code?
How do I control access to an area?
How do I control printing from ASP?
How do I convert a name to proper case?
How do I convert exchange rates in ASP?
How do I convert from Hex to Int and back?
How do I convert numbers into words?
How do I convert old IDC / HTX pages to ASP?
How do I count the number of current users / sessions?
How do I count the number of times x occurs in string y?
How do I create a database from ASP?
How do I create my own blog?
How do I deal with disappearing application variables?
How do I decode an encoded URL?
How do I detect the browser's encryption level / cipher strength?
How do I determine which version of IIS / ASP I'm running?
How do I disable the back/forward buttons?
How do I display the Euro symbol (€) in my ASP pages?
How do I embed a TAB character into source code?
How do I embed apostrophes (') and quotes (") in an HTML string?
How do I embed ASP delimiters (<% or %>) in a string?
How do I estimate the total size of my web page?
How do I execute a DOS command / batch file / exe from ASP?
How do I execute a ping command from ASP, and retrieve the results?
How do I find out the amount of space left on my server?
How do I fix the ::$DATA bug?
How do I FTP files from ASP?
How do I generate a treeview from ASP?
How do I generate unique GUIDs from ASP?
How do I get all the UBound() values in a multi-dimensional array?
How do I get IntelliSense to see ASP 3.0 methods?
How do I get my visitors' login name / username?
How do I get screen resolution from ASP?
How do I get the computer name / IP address of the server?
How do I get the server's timezone information?
How do I get the user's IP address or browser information?
How do I highlight words in a string?
How do I host multiple web sites on one IIS box?
How do I increase timeout values?
How do I iterate through session variables?
How do I know which version of VBScript my server is running?
How do I log / track ASP errors on my web site?
How do I make hyperlinks out of plain text URLs and e-mail addresses?
How do I make my ASP page pause or 'sleep'?
How do I make my ASP page refresh?
How do I make my ASP pages more efficient?
How do I make search engines index pages with QueryStrings?
How do I make sure an entered string contains only valid characters?
How do I make sure my ASP question gets answered?
How do I make sure my servers have the same time?
How do I make sure people go to page x before page y?
How do I make sure the client is still connected before processing?
How do I make Visual InterDev's debugging features work?
How do I manage a session across multiple windows?
How do I pad digits with leading zeros?
How do I parse / analyze IIS Logs?
How do I parse the domain name out of a URL?
How do I parse the file name out of a path or URL?
How do I perform a Whois / DNS lookup from ASP?
How do I persist session state without cookies / session variables?
How do I prevent 'Invalid use of Null' errors?
How do I prevent my ASP pages from caching?
How do I prevent people from printing my ASP page?
How do I print the first n characters of a large block of text?
How do I prompt a "Save As" dialog for an accepted mime type?
How do I protect my ASP code?
How do I protect my images and other visual content?
How do I put my ASP application onto a CD-Rom?
How do I read the contents of a remote web page?
How do I read the event log from ASP?
How do I redirect an http:// request to https://?
How do I refresh global.asa without restarting the application?
How do I round a number *properly* with VBScript?
How do I run ASP on other web servers besides IIS?
How do I schedule ASP files?
How do I send a MsgBox or InputBox from ASP?
How do I set session variables from client-side script?
How do I show a "Please Wait..." message?
How do I solve 'Event ID 5' errors?
How do I solve 'The Requested Resource is in Use' errors?
How do I solve 'The server failed to load the application' errors?
How do I solve 'The specified procedure could not be found' errors?
How do I solve ASP 0115 errors?
How do I specify ByRef / ByVal in VBScript?
How do I stress test my ASP application?
How do I time my ASP code?
How do I turn a KB Article #, like Q191987, into a usable URL?
How do I use ASP to [...]
How do I use extensions other than .ASP for ASP files?
How do I warn people when their session is about to expire?
How do I zip / unzip files from ASP?
I called Session.Abandon, why are my session variables still there?
I have plenty of RAM, why do I get an 'Out of memory' error?
Is there an easier way to patch my server(s)?
Should I use ADOVBS.inc for declaring constants?
Should I use sessionID to uniquely identify users?
Should I use the .inc extension for my include files?
Should I use VBScript or JScript for ASP?
What do I do when IIS 5.0 will not start?
What do I need to know about Response.Redirect?
What is Event ID 36, and how can I get IIS running again?
What is this 'Cannot detect OS type' error with NT 4.0 Option Pack?
What is this error 'An unhandled data type was encountered'?
What is wrong with IsNumeric()?
What is wrong with Request.ServerVariables("HTTP_REFERER")?
What is wrong with Session_OnEnd()?
What kind of object is Response.Crackers?
What's the deal with IIS 5.0 and ASP 3.0?
When I run a page in my browser, why does the ASP code not execute?
Where can I find out about .NET?
Where can I find out about running Perl in IIS?
Where can I host ASP pages for free (or at least cheap)?
Where do I get IIS / ASP?
Where else can I learn about ASP?
Which editor should I use for developing ASP applications?
Which is better, rs(0) or rs("column_name")?
Why am I getting 'subscript out of range' errors?
Why am I having problems installing Visual Studio.NET RTM?
Why am I having problems with Server.Execute and/or Server.Transfer?
Why are people telling me to fix my clock / timezone?
Why can't I browse localhost without an Internet connection?
Why can't I grab custom headers from Request.ServerVariables()?
Why can't I pass querystring information AND links to #bookmarks?
Why can't I turn buffering off using Response.Buffer?
Why can't I use #EXEC or #ECHO in an ASP page?
Why do I get 'BOF or EOF' errors?
Why do I get 'HTTP 500-12 Application Restarting' errors?
Why do I get 'HTTP/1.0 Invalid Application Name' errors?
Why do I get 'Invalid Default Script Language' errors?
Why do I get 'Name redefined' errors?
Why do I get 'Object doesn't support this property or method' errors?
Why do I get 'The RPC Server is Unavailable' messages?
Why do I get 'Type Mismatch' when using the Session object?
Why do I get 8000FFFF / 8002802B errors?
Why do I get 80010105 errors?
Why do I get 80010108 errors?
Why do I get 80020003 errors?
Why do I get 80020005 errors?
Why do I get 80020009 errors?
Why do I get 8002000E errors?
Why do I get 80029c84 errors?
Why do I get 8004E00F errors?
Why do I get 80070034 / 80070035 errors?
Why do I get 80070056 errors?
Why do I get 80070057 errors?
Why do I get 80090016 errors?
Why do I get 800A01C2 errors?
Why do I get 800A01C9 errors?
Why do I get 800A01CA errors?
Why do I get 800A01F4 errors?
Why do I get 800A01F9 errors?
Why do I get 800A03EC errors?
Why do I get 800A03ED / 800A03EE errors?
Why do I get 800A03F6 errors?
Why do I get 800A0401 errors?
Why do I get 800A0408 errors?
Why do I get 800A0414 errors?
Why do I get 800A138F errors?
Why do I get a 500 Internal Server error for all ASP errors?
Why do I get an 'overflow' error using CInt?
Why do I get an error about a 'Smart HTML interpreter'?
Why do I get ASP 0101 errors?
Why do I get ASP 0113 / Script timed out errors?
Why do I get ASP 0130 / ASP 0131 errors?
Why do I get ASP 0138 errors?
Why do I get ASP 0158 errors?
Why do I get errors in the 800A0001 -> 800A000F range?
Why do I get errors in the 800A0030 -> 800A003A range?
Why do I get errors in the 800A03F1 -> 800A03FF range?
Why do I get errors in the 800A0400 -> 800A041F range?
Why do I get errors when trying to redirect?
Why do I get HTTP/1.1 400 Bad Request errors?
Why do I get script errors on one machine but not another?
Why do I get the error Object Required: ''?
Why do my session / application variables disappear?
Why does 3.2 + 1.5 = 4.7000000000000002?
Why does 4 / 5 = 0?
Why does global.asa not fire?
Why does GUID not work correctly with response.write?
Why does IIS hang and/or stop serving ASP pages?
Why does my page render (properly) in IE and not in Netscape?
Why does RecordCount return as -1?
Why does REMOTE_HOST return an IP address instead of a name address?
Why does session.abandon not take effect right away?
Why is Netscape slow in IIS 5.0?
Why won't my ASP pages work in IIS 6.0?
Why won't my session variables stick?
Why won't QueryString values work with Server.Execute / Server.Transfer?
Why won't Windows search ASP files?