Как я запускаю асинхронный вызов в классика asp и игнорирую ответ?

Я иногда пропускаю контролируемые исключительные ситуации в C#/.NET.

я предполагаю помимо Java, никакая другая известная платформа не имеет их. Возможно, парни.NET просто пошли с потоком...

7
задан 2 October 2009 в 16:09
поделиться

3 ответа

The key problem here is if you don't wait and your script ends the ServerXMLHTTP component destroys itself and in the process aborts the outstanding request. There is no way for you to guarantee where the request has got to at that time.

For example if your server hasn't got round to issuing to the destination server it will see that its no longer needed and not bother.

Even if a connection has been made to the destination server the request may not yet have been given to a handler. Often a web server will check that client is still connected before committing resources to fulfilling a request. If it sees your connection has been dropped it won't bother completing the request.

In other words there is no reliable way to perform this operation asychronously in classic ASP, it just isn't designed to handle that sort of thing. The best you can get is to do other stuff while your script gets on with something else (if you've got anything else to be getting on with), however, I wouldn't even recommend that since asynchronous WinHTTP inside ASP is flaky.

7
ответ дан 6 December 2019 в 07:07
поделиться

Мы используем async XMLRequest для регистрации ошибок в Fogbugz на наших сайтах ASP. Поскольку это единственный отчет об ошибке, мы не хотим, чтобы наши пользователи сидели в ожидании завершения нашего кода, поэтому мы делаем это асинхронно. Это может быть что угодно: от отсутствующего файла конфигурации, тайм-аута БД, отсутствия поиска в каком-либо файле конфигурации и т. Д. В этих случаях асинхронный режим работает очень хорошо, и если нет, то это не конец света для нас, но у нас не было никаких проблем с этим. Мы использовали этот сценарий, который мы создали и разместили в другом вопросе:

System.Net.HttpWebRequest в классическом asp?

Как сказал Энтони, хотя это не гарантировано на 100%. В качестве возможного исправления вы можете установить Response.Buffer = true, отобразить весь свой вывод пользователю, вызвать Response. Сбросьте, а затем выполните вызов waitForResponse. Пользователь увидит всю страницу и сможет взаимодействовать с ней без каких-либо задержек, и это даст вашему асинхронному вызову немного больше времени для завершения.

3
ответ дан 6 December 2019 в 07:07
поделиться

Сегодня у меня такая же проблема. Я решил это с помощью объекта «Microsoft.XMLHTTP».

dim xmlhttp 
set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "POST", url, true 
xmlhttp.Send ""

И теперь запрос отправляется асинхронно, и целевой URL-адрес был поражен. Надеюсь, это поможет.

13
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: