отправка XML из Classic asp и запись в функцию File - PullRequest
1 голос
/ 11 февраля 2010

Я index.html страница, которая публикует данные на page1.asp page1.asp преобразует данные и отправляет их в Page2.asp с помощью этой функции «PostTo»

Page2.asp предполагает: -записать данные в data.txt с помощью «WriteToFile» Проблема: функция WriteToFile не записывает ничего в файл при вызове со страницы 2 Но работают при звонке со страницы 1

Есть предложения?

Function PostTo(Data, URL)
     Dim objXMLHTTP, xml
    ''# On Error Resume Next
       Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")
       objXMLHTTP.Open "POST", URL, False
       objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
       objXMLHTTP.Send Data
      If objXMLHTTP.readyState <> 4 then
      objXMLHTTP.waitForResponse 10
      End If
      If Err.Number = 0  AND objXMLHTTP.Status = 200 then
       PostTo = objXMLHTTP.responseText     
      else
       PostTo = "Failed"
      End If  
      '' # if xhttp.Status<>200 then err.Raise vbObjectError, , "Server returned http code " & xhttp.Status    
             Set objXMLHTTP = Nothing
   End Function

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Проблема, с которой вы столкнулись, не просто решается другой виртуальной папкой, а должна быть другим приложением. Если вы отключили отладку ASP, вы обнаружите, что она сработала.

Проблема в том, что пока страница1 выполняет запрос к странице2, поток, на котором она выполняется, блокируется в ожидании ответа. Затем запрос к странице2 будет выполняться в другом потоке.

Когда ASP Debugging включен, ASP будет использовать только один поток для ответа на запросы. Поэтому, когда приходит запрос к page2, он не может найти поток для выполнения, поскольку единственный доступный поток все еще выполняет page1, поэтому запрос к page2 будет поставлен в очередь. Однако страница 1 никогда не завершится, пока страница 2 не завершится, а страница 2 не сможет завершиться, пока страница 1 не завершится, чтобы она могла использовать единственную доступную нить. Ваше приложение зависло, и для его очистки необходимо выполнить сброс.

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

0 голосов
/ 11 февраля 2010

Готово. Вы должны отправить в ASP в другой виртуальной папке. Если ASP находится в той же виртуальной папке, ASP перестает отвечать (зависает). После закрытия браузера этот ASP и другие ASP продолжают зависать, поскольку запрос остается в очереди, даже если вы закрываете браузер. Необходимо перезапустить IIS или перезагрузить компьютер.

...