/onlineservices/grantapp/final.asp is being treated as a static file and
downloaded verbatim (<% %> is still there) instead of as a dynamic ASP file
that is executed to generate a HTML response.
Assuming no ISAPI Filter, this means either:
1. .asp does not exist as an Application Mapping for this URL resource
2. Execute permission is "None" for this URL resource
--
//David
IIS
http://blogs.msdn.com/David.Wang
This posting is provided "AS IS" with no warranties, and confers no rights.
//
"Neil Rossi" <rossi@kdvsystems.com> wrote in message
news:ltpkt11cckbp32afhd2h7smjc6r6lsuefm@4ax.com...[color=blue]
> Thanks for your response, David. There are, as far as I can see, no
> ISAPI filters defined within INetMgr, either for this specific website
> or at the Default website level.
>
> Just for the heck of it, I logged in to the remote server and ran the
> app throwing the error using localhost. Now I see that the page
> showing the download dialog on a remote client, is actually displaying
> a "500 Internal Server Error" when logged in to the IIS server.
>
> Here's the log output from WFetch run on the server Win2kDev1. I am
> trying to load the page final.asp, so this error page doesn't seem to
> give me much info.
> ------------------------------
> started....
> WWWConnect::Connect("localhost","443")\n
> source port: 2065\r\n
> REQUEST: **************\n
> GET /onlineservices/grantapp/final.asp HTTP/1.1\r\n
> Host: localhost\r\n
> Accept: */*\r\n
> \r\n
> RESPONSE: **************\n
> HTTP/1.1 200 OK\r\n
> Server: Microsoft-IIS/5.0\r\n
> Date: Fri, 27 Jan 2006 18:30:47 GMT\r\n
> Connection: close\r\n
> Content-Type: application/octet-stream\r\n
> Cache-control: private\r\n
> Content-Length: 7860\r\n
> \r\n
> <%@ language="VBScript" %>\r\n
> <%\r\n
> Option Explicit\r\n
> \r\n
> Const lngMaxFormBytes = 200\r\n
> \r\n
> Dim objASPError, blnErrorWritten, strServername, strServerIP,
> strRemoteIP\r\n
> Dim strMethod, lngPos, datNow, strQueryString, strURL\r\n
> \r\n
> If Response.Buffer Then\r\n
> Response.Clear\r\n
> Response.Status = "500 Internal Server Error"\r\n
> Response.ContentType = "text/html"\r\n
> Response.Expires = 0\r\n
> End If\r\n
> \r\n
> Set objASPError = Server.GetLastError\r\n
> %>\r\n
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">\r\n
> \r\n
> <html dir=ltr>\r\n
> \r\n
> <head>\r\n
> <style>\r\n
> a:link\t\t\t{font:8pt/11pt verdana; color:FF0000}\r\n
> a:visited\t\t{font:8pt/11pt verdana; color:#4e4e4e}\r\n
> </style>\r\n
> \r\n
> <META NAME="ROBOTS" CONTENT="NOINDEX">\r\n
> \r\n
> <title>The page cannot be displayed</title>\r\n
> \r\n
> <META HTTP-EQUIV="Content-Type" Content="text-html;
> charset=Windows-1252">\r\n
> </head>\r\n
> \r\n
> <script> \r\n
> function Homepage(){\r\n
> <!--\r\n
> // in real bits, urls get returned to our script like this:\r\n
> // res://shdocvw.dll/http_404.htm#
http://www.DocURL.com/bar.htm \r\n
> \r\n
> \t//For testing use DocURL =
> "res://shdocvw.dll/http_404.htm#https://www.microsoft.com/bar.htm"\r\n
> \tDocURL=document.URL;\r\n
> \t\r\n
> \t//this is where the http or https will be, as found by searching for
> :// but skipping the res://\r\n
> \tprotocolIndex=DocURL.indexOf("://",4);\r\n
> \t\r\n
> \t//this finds the ending slash for the domain server \r\n
> \tserverIndex=DocURL.indexOf("/",protocolIndex + 3);\r\n
> \r\n
> \t//for the href, we need a valid URL to the domain. We search for the
> # symbol to find the begining \r\n
> \t//of the true URL, and add 1 to skip it - this is the BeginURL
> value. We use serverIndex as the end marker.\r\n
> \t//urlresult=DocURL.substring(protocolIndex - 4,serverIndex);\r\n
> \tBeginURL=DocURL.indexOf("#",1) + 1;\r\n
> \turlresult=DocURL.substring(BeginURL,serverIndex) ;\r\n
> \t\t\r\n
> \t//for display, we need to skip after
http://, and go to the next
> slash\r\n
> \tdisplayresult=DocURL.substring(protocolIndex + 3 ,serverIndex);\r\n
> \tInsertElementAnchor(urlresult, displayresult);\r\n
> }\r\n
> \r\n
> function HtmlEncode(text)\r\n
> {\r\n
> return text.replace(/&/g, '&').replace(/'/g,
> '"').replace(/</g, '<').replace(/>/g, '>');\r\n
> }\r\n
> \r\n
> function TagAttrib(name, value)\r\n
> {\r\n
> return ' '+name+'="'+HtmlEncode(value)+'"';\r\n
> }\r\n
> \r\n
> function PrintTag(tagName, needCloseTag, attrib, inner){\r\n
> document.write( '<' + tagName + attrib + '>' + HtmlEncode(inner)
> );\r\n
> if (needCloseTag) document.write( '</' + tagName +'>' );\r\n
> }\r\n
> \r\n
> function URI(href)\r\n
> {\r\n
> IEVer = window.navigator.appVersion;\r\n
> IEVer = IEVer.substr( IEVer.indexOf('MSIE') + 5, 3 );\r\n
> \r\n
> return (IEVer.charAt(1)=='.' && IEVer >= '5.5') ?\r\n
> encodeURI(href) :\r\n
> escape(href).replace(/%3A/g, ':').replace(/%3B/g, ';');\r\n
> }\r\n
> \r\n
> function InsertElementAnchor(href, text)\r\n
> {\r\n
> PrintTag('A', true, TagAttrib('HREF', URI(href)), text);\r\n
> }\r\n
> \r\n
> //-->\r\n
> </script>\r\n
> \r\n
> <body bgcolor="FFFFFF">\r\n
> \r\n
> <table width="410" cellpadding="3" cellspacing="5">\r\n
> \r\n
> <tr> \r\n
> <td align="left" valign="middle" width="360">\r\n
> \t<h1 style="COLOR:000000; FONT: 13pt/15pt verdana"><!--Problem-->The
> page cannot be displayed</h1>\r\n
> </td>\r\n
> </tr>\r\n
> \r\n
> <tr>\r\n
> <td width="400" colspan="2">\r\n
> \t<font style="COLOR:000000; FONT: 8pt/11pt verdana">There is a
> problem with the page you are trying to reach and it cannot be
> displayed.</font></td>\r\n
> </tr>\r\n
> \r\n
> <tr>\r\n
> <td width="400" colspan="2">\r\n
> \t<font style="COLOR:000000; FONT: 8pt/11pt verdana">\r\n
> \r\n
> \t<hr color="#C0C0C0" noshade>\r\n
> \t\r\n
> <p>Please try the following:</p>\r\n
> \r\n
> \t<ul>\r\n
> <li id="instructionsText1">Click the \r\n
> <a href="javascript
:location.reload()">\r\n
> Refresh</a> button, or try again later.<br>\r\n
> </li>\r\n
> \t \r\n
> <li>Open the \r\n
> \t \r\n
> \t <script>\r\n
> \t <!--\r\n
> \t if (!((window.navigator.userAgent.indexOf("MSIE") > 0) &&
> (window.navigator.appVersion.charAt(0) == "2")))\r\n
> \t {\r\n
> \t \t Homepage();\r\n
> \t }\r\n
> \t //-->\r\n
> \t </script>\r\n
> \r\n
> \t home page, and then look for links to the information you want.
> </li>\r\n
> </ul>\r\n
> \t\r\n
> <h2 style="font:8pt/11pt verdana; color:000000">HTTP 500.100 -
> Internal Server\r\n
> Error - ASP error<br>\r\n
> Internet Information Services</h2>\r\n
> \r\n
> \t<hr color="#C0C0C0" noshade>\r\n
> \t\r\n
> \t<p>Technical Information (for support personnel)</p>\r\n
> \r\n
> <ul>\r\n
> <li>Error Type:<br>\r\n
> <%\r\n
> Dim bakCodepage\r\n
> on error resume next\r\n
> \t bakCodepage = Session.Codepage\r\n
> \t Session.Codepage = 1252\r\n
> on error goto 0\r\n
> Response.Write Server.HTMLEncode(objASPError.Category)\r\n
> If objASPError.ASPCode > "" Then Response.Write Server.HTMLEncode(",
> " & objASPError.ASPCode)\r\n
> Response.Write Server.HTMLEncode(" (0x" & Hex(objASPError.Number) &
> ")" ) & "<br>"\r\n
> \r\n
> If objASPError.ASPDescription > "" Then \r\n
> \t\tResponse.Write Server.HTMLEncode(objASPError.ASPDescription) &
> "<br>"\r\n
> \r\n
> elseIf (objASPError.Description > "") Then \r\n
> \t\t Response.Write Server.HTMLEncode(objASPError.Description) &
> "<br>" \r\n
> end if\r\n
> \r\n
> \r\n
> \r\n
> blnErrorWritten = False\r\n
> \r\n
> ' Only show the Source if it is available and the request is from
> the same machine as IIS\r\n
> If objASPError.Source > "" Then\r\n
> strServername = LCase(Request.ServerVariables("SERVER_NAME"))\r\n
> strServerIP = Request.ServerVariables("LOCAL_ADDR")\r\n
> strRemoteIP = Request.ServerVariables("REMOTE_ADDR")\r\n
> If (strServername = "localhost" Or strServerIP = strRemoteIP) And
> objASPError.File <> "?" Then\r\n
> Response.Write Server.HTMLEncode(objASPError.File)\r\n
> If objASPError.Line > 0 Then Response.Write ", line " &
> objASPError.Line\r\n
> If objASPError.Column > 0 Then Response.Write ", column " &
> objASPError.Column\r\n
> Response.Write "<br>"\r\n
> Response.Write "<font style=""COLOR:000000; FONT: 8pt/11pt
> courier new""><b>"\r\n
> Response.Write Server.HTMLEncode(objASPError.Source) &
> "<br>"\r\n
> If objASPError.Column > 0 Then Response.Write
> String((objASPError.Column - 1), "-") & "^<br>"\r\n
> Response.Write "</b></font>"\r\n
> blnErrorWritten = True\r\n
> End If\r\n
> End If\r\n
> \r\n
> If Not blnErrorWritten And objASPError.File <> "?" Then\r\n
> Response.Write "<b>" & Server.HTMLEncode( objASPError.File)\r\n
> If objASPError.Line > 0 Then Response.Write Server.HTMLEncode(",
> line " & objASPError.Line)\r\n
> If objASPError.Column > 0 Then Response.Write ", column " &
> objASPError.Column\r\n
> Response.Write "</b><br>"\r\n
> End If\r\n
> %>\r\n
> </li>\r\n
> <p>\r\n
> <li>Browser Type:<br>\r\n
> <%= Server.HTMLEncode(Request.ServerVariables("HTTP_US ER_AGENT"))
> %>\r\n
> </li>\r\n
> <p>\r\n
> <li>Page:<br>\r\n
> <%\r\n
> strMethod = Request.ServerVariables("REQUEST_METHOD")\r\n
> \r\n
> Response.Write strMethod & " "\r\n
> \r\n
> If strMethod = "POST" Then\r\n
> Response.Write Request.TotalBytes & " bytes to "\r\n
> End If\r\n
> \r\n
> Response.Write Request.ServerVariables("SCRIPT_NAME")\r\n
> \r\n
> lngPos = InStr(Request.QueryString, "|")\r\n
> \r\n
> If lngPos > 1 Then\r\n
> Response.Write "?" & Server.HTMLEncode(Left(Request.QueryString,
> (lngPos - 1)))\r\n
> End If\r\n
> \r\n
> Response.Write "</li>"\r\n
> \r\n
> If strMethod = "POST" Then\r\n
> Response.Write "<p><li>POST Data:<br>"\r\n
> If Request.TotalBytes > lngMaxFormBytes Then\r\n
> Response.Write Server.HTMLEncode(Left(Request.Form,
> lngMaxFormBytes)) & " . . ."\r\n
> Else\r\n
> Response.Write Server.HTMLEncode(Request.Form)\r\n
> End If\r\n
> Response.Write "</li>"\r\n
> End If\r\n
> \r\n
> %>\r\n
> <p>\r\n
> <li>Time:<br>\r\n
> <%\r\n
> datNow = Now()\r\n
> \r\n
> Response.Write Server.HTMLEncode(FormatDateTime(datNow, 1) & ", " &
> FormatDateTime(datNow, 3))\r\n
> on error resume next\r\n
> \t Session.Codepage = bakCodepage \r\n
> on error goto 0\r\n
> %>\r\n
> </li>\r\n
> </p>\r\n
> <p>\r\n
> <li>More information:<br>\r\n
> <% strQueryString = "prd=iis&sbp=&pver=5.0&ID=500;100&cat=" &
> Server.URLEncode(objASPError.Category) & _\r\n
> "&os=&over=&hrd=&Opt1=" & Server.URLEncode(objASPError.ASPCode) &
> "&Opt2=" & Server.URLEncode(objASPError.Number) & _\r\n
> "&Opt3=" & Server.URLEncode(objASPError.Description) \r\n
> strURL = "http://www.microsoft.com/ContentRedirect.asp?" &
> _\r\n
> strQueryString\r\n
> %>\r\n
> <a href="<%= strURL %[color=green]
>>">Microsoft Support</a>\r\n[/color]
> </li>\r\n
> </p>\r\n
> \r\n
> </font></td>\r\n
> </tr>\r\n
> \r\n
> </table>\r\n
> </body>\r\n
> </html>\r\n
> WWWConnect::Close("localhost","443")\n
> closed source port: 2065\r\n
> finished.
>
> ===========================
> On Fri, 27 Jan 2006 00:12:03 -0800, "David Wang [Msft]"
> <someone@online.microsoft.com> wrote:
>[color=green]
>>For the page that causes the file download dialog, use WFetch to make the
>>same request and post the raw response.
>>
>>
http://www.microsoft.com/downloads/d...displaylang=en
>>
>>If it happens on random pages and not specific pages, then I would not
>>look
>>at Application Mapping (which would be consistent) nor the script in the
>>page (which would be consistent unless the problem is server-specific).
>>
>>Also, can you report the Global and Site ISAPI Filters installed on both
>>machines.
>>
>>My suspicion right now is that some ISAPI Filter is mistakenly adding
>>certain response headers to ASP pages such that the browser asks to
>>download
>>the page instead of displaying it.[/color][/color]