У меня очень странная проблема с VBScript: он отлично работает в зависимости от сервера, на котором находится веб-сайт.VBScript не работает в зависимости от веб-сервера
У меня одно и то же веб-приложение на двух серверах с IIS 7.5. На каждом сервере код точно то же самое.
VBScript выполняет некоторые строки Excel и обновляет некоторую информацию в веб-приложении. Проблема возникает при обновлении этой информации. В одном из серверов, нет никаких проблем, но в других, я получаю ошибку ниже:
Как работает сценарий, как это будет делать, я думаю, нет никакой ошибки синтаксиса
код метание ошибка:
With objIE
If (testing) Then
.Navigate URLtesting
Else
.Navigate URL
WScript.Sleep 2000
End If
WaitWebLoad()
.document.getElementById(user).Value = userScript
.document.getElementById(password).Value = passwordScript
.document.getElementById(logInButton).Click()
WaitWebLoad()
.document.getElementByID(loretoLink).Click()
WaitWebLoad()
.document.getElementByID(updatePLLink).Click()
WaitWebLoad()
Do
lastRow = activeSheet.Cells(rowIndex, columnPL_ID).Value
dateAssociated = activeSheet.Cells(rowIndex, columnArrivalDate).Value
concesion = activeSheet.Cells(rowIndex, columnConcesion).Value
If lastRow <> "" Then
.document.getElementByID(searchPL_TB).Value = lastRow
.document.getElementByID(searchPL_Button).Click()
WaitWebLoad()
If (Not (.document.getElementByID(errorLookingPL)) Is Nothing Or Not (.document.getElementByID(noSearchResult) Is Nothing)) Then
'PL not found
recordsNotFound = recordsNotFound + 1
WriteOpenFileText(logFilePath), (Now & vbTab & "***PL not found: " & lastRow & " - [" & dateAssociated & "]" & " - " & concesion & vbCrLf)
Else ...
номер строки 295:
If (Not (.document.getElementByID(errorLookingPL)) is Nothing Or Not (.document.getElementByID(noSearchResult) is Nothing)) Then
WaitWebLoad код функция:
Function WaitWebLoad()
Dim timer
timer = 0
With objIE
Do While .Busy
If timer < timerWebLoad Then
WScript.Sleep 100
timer = 100
Else
'Error loading the web
objExcel.Workbooks.close
objExcel.quit
objIE.quit
DeleteFile(pathTemp)
endScriptStamp = Now
WScript.Echo("Error." & vbCrLf & "Total runtime is: " & DateDiff("s", startScriptStamp, endScriptStamp) & " seconds.")
WScript.quit
End If
Loop
End With
End Function
Я думаю, проблема в том, что сценарий, при запуске сервера, где ошибка происходит, теряет objIE
объекта, но я не знаю, почему это становится потерянный только на одном из серверов.
Я не уверен, что IIS должен делать с этим, ваш работает код VBS, который на стороне клиента * (сервер в данном случае является клиент) *, это не имеет никакого отношения к IIS, насколько Я вижу?? – Lankymart
Вероятно, на одном из серверов не установлен Excel или COM-компоненты. В любом случае вам нужно выполнить некоторую отладку, чтобы определить, какой объект не установлен. – Lankymart
@ Lankymart Это правильно. Сервер не имеет ничего общего с этим: сценарий похож на человека, выполняющего некоторые действия в веб-приложении. Но, в зависимости от сервера, я обращаюсь к веб-приложению, он работает нормально или нет. Серверу не нужно устанавливать Excel или COM-компоненты, потому что, если я получаю доступ к веб-сайту, находящемуся на сервере, на котором запущен скрипт, веб-приложение полностью полезно для взаимодействия с человеком. – Carlos