(РЕШЕНО) ASP.NET - ЖУЧОК? Веб-форма делает обратную передачу через 100 минут. Почему?
- Что случилось? Моя веб-форма выполняет обратную передачу через 100 минут сама по себе.
Я создал очень простую форму для тестирования с лог-файлом.
Я открываю сайт в браузере, нажимаю кнопку и закрываю браузер (скрипт запускается на сервере без вывода браузера).
Событие Button1_Click запускает цикл в течение 120 минут.
Бревно дает мне
Form1: Load Button1_Click: Start
Через 100 минут IIS сам выполняет обратную передачу.
Окончательный журнал-это:
Form1: Load Button1_Click: Start Form1: Load Button1_Click: Start
Button1_Click:End никогда не достигается.
Я заметил это поведение несколько месяцев назад на форме, которой требуется несколько часов, чтобы получить некоторые данные из веб-сервиса.
У кого-нибудь есть идея?
Я ничего не изменил ни в procecure, ни в IIS6, ни в web.config.
Что я уже пробовал:
timeoutcheck.aspx-файл
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="timeoutcheck.aspx.vb" Inherits="_timeoutcheck" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <form id="form1" runat="server"> <p><%=Date.Now.ToString() %></p> <p><asp:Button runat="server" ID="Button1" Text="Start" /></p> <p><asp:Button runat="server" ID="Button2" Text="Dummy" /></p> </form> </body> </html>
timeoutcheck.aspx-файл.ВБ:
Partial Class _timeoutcheck Inherits System.Web.UI.Page Private Sub form1_Load(sender As Object, e As EventArgs) Handles form1.Load DoLog("Form_Load") End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim dStart As Date = Date.Now Dim timeoutMinutes As Integer = 120 DoLog("Button1_Click:Start") Do While Date.Now < dStart.AddMinutes(timeoutMinutes) 'foo Loop DoLog("Button1_Click:End") End Sub Private Sub DoLog(messageInfo As String) Dim subject As String = "Timeoutcheck (" & HttpContext.Current.Session.SessionID & ")" Dim message As New List(Of String) From { "#### " & subject, messageInfo, Date.Now.ToString() & "." & Date.Now.Millisecond, "Postback: " & IsPostBack, "Send: " & If(Request.UrlReferrer Is Nothing, "--", Request.UrlReferrer.ToString()), Environment.StackTrace, "--------------" } Using stmWriter = New System.IO.StreamWriter(Server.MapPath("~/timeoutcheck.log"), True) stmWriter.WriteLine(String.Join(vbCrLf, message.ToArray())) stmWriter.Close() End Using End Sub End Class
ZurdoDev
Я не уверен, что происходит, но я бы предложил запустить его асинхронно или использовать совершенно другой метод. 100 минут-это сумасшедшее время для браузера, чтобы сидеть там и ждать. Любое количество вещей может пойти не так в течение этого времени.
Sni.DelWoods
Спасибо. Не могли бы вы дать мне короткий фрагмент кода, как сделать это асинхронно?
Я попробовал этот скрипт на новом веб-сайте, без web.config или каких-либо других конфигураций. У меня тот же результат.