Как определить ошибку, если IIS 6 перенаправляет на другую страницу на основе ошибки? - PullRequest
0 голосов
/ 24 февраля 2011

Хорошо, это может показаться странным, но в основном это так:

На странице asp (не .net) есть форма, которая отправляет информацию на сервер на базе MS SQL 2000, работающий на IIS6 (я думаю, это может быть IIS 5.1). Сервер настроен на прием только цифр, но форма не проверена.

Поэтому, когда пользователь вводит буквы алфавита и отправляет сообщение об ошибке, отображается сообщение. Я настроил IIS для перенаправления на другую страницу на основе кода ошибки http («извините, запрошенная вами страница не может быть загружена в данный момент»), но теперь я, как разработчик, не знаю, что такое код ошибки это все о.

Есть ли способ настроить страницу ошибок на «OnLoad», чтобы отправить электронное письмо, содержащее адрес страницы, вызвавший ошибку, само сообщение об ошибке, время ошибки, текущий пользователь, вошедший в систему и т. Д.? Я открыт для любых решений, клиентского javascript или asp-кода на стороне сервера ... Даже конфигурации IIS являются действительными ответами .. Lol ...

1 Ответ

0 голосов
/ 24 февраля 2011

В IIS, вкладка «Пользовательские ошибки»> измените ошибку 500 на тип файла URL «error.asp»

В файле error.asp вы можете зациклить элементы формы, строки запроса и сеанса, а также отправить ошибкуподробности на дом об ошибке.

    Dim ASPErr ,ASPErrStr,intKey
  Dim strQueryStringElement,strQueryStringValue,strCurrentQueryString
  Dim strFormElement,strFormValue,strCurrentForm  
    Dim strSessElement,strSessValue,strCurrentSess
  Set ASPErr = Server.GetLastError()

  ASPErrStr = ""
  ASPErrStr = ASPErrStr&vbcrlf&"ASPCode: "&ASPErr.ASPCode
  ASPErrStr = ASPErrStr&vbcrlf&"ASPDescription: "&ASPErr.ASPDescription
  ASPErrStr = ASPErrStr&vbcrlf&"Category: "&ASPErr.Category
  ASPErrStr = ASPErrStr&vbcrlf&"Column: "&ASPErr.Column
  ASPErrStr = ASPErrStr&vbcrlf&"Description: "&ASPErr.Description
  ASPErrStr = ASPErrStr&vbcrlf&"File: "&ASPErr.File
  ASPErrStr = ASPErrStr&vbcrlf&"Line: "&ASPErr.Line
  ASPErrStr = ASPErrStr&vbcrlf&"Number: "&ASPErr.Number
  ASPErrStr = ASPErrStr&vbcrlf&"Source: "&ASPErr.Source



For Each intKey in Request.QueryString
    strQueryStringElement = Request.QueryString.Key(intKey)
    strQueryStringValue = Request.QueryString.Item(strQueryStringElement)         
    strCurrentQueryString = strCurrentQueryString & "Element: "& _ 
    strQueryStringElement & ".........Value: " &strQueryStringValue& VBCRLF
Next

For Each intKey in Request.Form
    strFormElement = Request.Form.Key(intKey)
    strFormValue = Request.Form.Item(strFormElement)         
    strCurrentForm =    strCurrentForm & "Element: "& _ 
    strFormElement & ".........Value: " &strFormValue&VBCRLF
Next

For Each intKey in Session.Contents
    strSessElement = intKey
    strSessValue = Session(intKey)
    strCurrentSess =    strCurrentSess & "Element: "& _ 
    strSessElement & ".........Value: " &strSessValue& vbcrlf
Next

ASPErrStr = ASPErrStr&vbcrlf&"QueryString: "
ASPErrStr = ASPErrStr&vbcrlf&strCurrentQueryString
ASPErrStr = ASPErrStr&vbcrlf&"Form: "
ASPErrStr = ASPErrStr&vbcrlf&strCurrentForm
ASPErrStr = ASPErrStr&vbcrlf&"Session: "
ASPErrStr = ASPErrStr&vbcrlf&strCurrentSess

Set myMail=CreateObject("CDO.Message")
myMail.Subject="Error"
myMail.From="someone@address.com"
myMail.To="someoneelse@address.com"
myMail.TextBody= ASPErrStr
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing")=2
'Name or IP of remote SMTP server
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver")="smtpserveraddress"
'Server port
myMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport")=25 
myMail.Configuration.Fields.Update
myMail.Send
set myMail=nothing
  %> 
...