从Classic asp发布XML并写入File函数

时间:2010-02-11 16:07:50

标签: xml post asp-classic xmlhttprequest

我将数据发布到page1.asp的index.html页面 page1.asp转换数据并使用此函数“PostTo”将其发布到Page2.asp

Page2.asp假设: 使用“WriteToFile”将数据写入data.txt 问题:当从page2调用时,WriteToFile函数不会在文件中写入任何内容 但是从第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 个答案:

答案 0 :(得分:1)

您遇到的问题不仅仅是由不同的虚拟文件夹解决,而是需要一个不同的应用程序。如果你关闭了ASP调试,你会发现它可以工作。

问题是,当page1向page2发出请求时,正在运行的线程被阻塞,等待响应。然后,对page2的请求将在另一个线程上运行。

启用ASP调试时,ASP将仅使用单个线程来响应请求。因此,当对page2的请求到达时,它找不到要运行的线程,因为唯一可用的线程仍在运行page1,因此对page2的请求将排队。但是,page1永远不会完成,直到page2完成,page2才能完成,直到page1完成,以便它可以使用可用的单个线程。您的应用程序已挂起,您需要重置以清除它。

在正常使用情况下,每个处理器可以获得25个线程,因此这种情况要难得多。但是,如果你有繁忙的网站,很多这种“自我请求”可能会导致这种僵局(或者最严重的损害性能)。

答案 1 :(得分:0)

完成。 你应该POST到不同的虚拟文件夹中的ASP。如果ASP位于同一虚拟文件夹中,则ASP停止响应(挂起)。关闭浏览器后,该ASP和其他ASP将继续挂起,因为即使您关闭浏览器,请求也会保持排队状态。您必须重新启动IIS或重新启动计算机。