Sni.DelWoods Ответов: 1

(РЕШЕНО) 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 или каких-либо других конфигураций. У меня тот же результат.

1 Ответов

Рейтинг:
5

Sni.DelWoods

вероятно, решен.

Изменен web.config:

<compilation debug="false" targetFramework="4.7">

к
<compilation debug="true" targetFramework="4.7">


Этот параметр переопределяет тайм-аут выполнения на бесконечный.
После проверки я переоденусь обратно в false и задайте строки httpruntime выполнение тайм-аута и прочих параметров.

Источник:
отладка-есть-в-интернете-настройка-плохая штука