У меня есть решение на основе ASP, VB6, COM и SQL Server. Веб-сервер IIS 6.
С нерегулярными интервалами на странице ASP появляется следующее сообщение об ошибке:
Microsoft VBScript runtime (0x800A01FB)
An exception occurred: 'objPSM.GetValue'
(где "objPSM" - это мой собственный COM-класс для обработки сеансов).
Если я перезагружаю страницу, она работает.
Я попытался найти код ошибки в Google, и эта статья появляется (http://support.microsoft.com/kb/262681),, но это не должно относиться к моей проблеме, поскольку я не использую объект Session - у меня есть собственный код обработки сеанса, который использует куки и база данных для хранения состояния.
Вот код VB, который взрывается:
Public Function GetValue(ByVal pSessionID As String, _
ByVal pName As String) As String
Dim ErrSource As String
Dim ErrNumber As Long
Dim ErrDescription As String
On Error GoTo Err_Handler
Dim lConn As ADODB.Connection
Dim cmd As ADODB.Command
Dim lReturnValue As String
Set lConn = GetDBConn
Set cmd = CreateObject("ADODB.Command")
cmd.ActiveConnection = lConn
cmd.CommandText = "pss_getvalue"
cmd.Parameters.Append cmd.CreateParameter("p_pss_id", adVarChar, adParamInput, 36, pSessionID)
cmd.Parameters.Append cmd.CreateParameter("p_pss_name", adVarChar, adParamInput, 35, pName)
cmd.Parameters.Append cmd.CreateParameter("p_pss_value", adVarChar, adParamOutput, 255)
cmd.Execute , , adCmdStoredProc
lReturnValue = Nvl(cmd.Parameters("p_pss_value").Value, "")
lConn.Close
Set cmd = Nothing
Set lConn = Nothing
GetValue = lReturnValue
Exit_Procedure:
Exit Function
Err_Handler:
ErrSource = Err.Source
ErrNumber = Err.Number
ErrDescription = Err.Description
On Error Resume Next
Call LogEvent(ErrSource & ".GetValue: ", ErrNumber & ": " & ErrDescription)
GetValue = ""
GoTo Exit_Procedure
End Function
Обратите внимание, что, несмотря на то, что здесь есть обработчик ошибок, код никогда не попадает сюда, потому что среда выполнения VB останавливается и выдает исключение, что приводит к повреждению страницы ASP вместо тихой регистрации и возврата пустой строки.
Кто-нибудь знает, что означает код ошибки (0x800A01FB)?
ОБНОВЛЕНИЕ: Поговорили с хостинг-провайдером, и они переработали пул приложений IIS. Ошибка ушла. Вернемся к этому вопросу, если проблема появится снова.