ASP.NET Zone

Die ASP.NET Community. Alle Antworten rund um Microsoft® Webtechnologien
Willkommen bei ASP.NET Zone. Anmelden | Registrieren | Hilfe | Impressum | ASP.NET Zone Suchplugin

in
Home Blogs Foren FAQ Communities Fotos Downloads
Werbeanzeige

Timeout für den Vorgang überschritten - Fehler beim Ausführen von Methoden über ein Webservice

Letzter Beitrag 11-24-2009, 12:15 von flashsilver. 0 Antworten.
Beiträge sortieren: Zurück Weiter
  •  11-24-2009, 12:15 214746

    Timeout für den Vorgang überschritten - Fehler beim Ausführen von Methoden über ein Webservice

    Hallo Zusammen,

    eine kurze Erklärung, weshalb ich dieses Thema aufgreife. Ich habe eine Webanwendung von einem Kollegen übernommen. Dieser hat eine VB-Anwendung als ausführbare Datei (exe) gesschrieben, die über mehrere Geplanten Tasks täglich (Mitternacht und eine Stunde später) ausgeführt werden. Es geht um Statistiken für ca. 103 Websites, die täglich aktualiserrt werden. Über einen Parameter wird entschieden, welche Methoden innerhalb des Programms aufgerufen werden soll:
    Dim Service As New xy.Service
    Select Case .CommandLineArgs.Item(0)
                            Case "BuildIISStatistics"
                                Console.WriteLine("Method: BuildIISStatistics")
                                Service.BuildIISStatistics()
                            Case "BuildSiteStatistics"
                                Console.WriteLine("Method: BuildSiteStatistics")
                                Service.BuildSiteStatistics()
                            Case Else
                                End
                        End Select

    Die Web Reference in der VB-anwendung ist über xy zu erreichen und besitzt die URL zur asmx-Datei, in der die Methoden stehen, die ausgeführt werden.
    Zum Beispiel die BuildIISStatistics() erzeugt aus den IIS-Logs mit der LogQueryClass eine Tabelle und fühlt sie mit den Werten von jeder Website (wie gesagt ca. 103). Anschließend wird ein zweiter Geplanter Task (die Methode BuildSiteStatistics()) ausgeführt, die diese Werte aus der eben erzeugten Tabelle nimmt und in eine weitere Tabelle schreibt und die eben erzeugte Tabelle löscht. Auch für jede Website. Es funktioniert auch, allerdings bricht das ganze nach genau 100 Sekunden mit einem Timeout ab. Mein Kollege hat die <httpRuntime maxRequestLength="1048576" executionTimeout="3600"/> verändert.

    die BuildIISStatistics() :
    Dim SiteBusinessLogic As New SiteBusinessLogic
            Dim Sites As Sites = SiteBusinessLogic.ReadMultiple
            For Each Site As Site In Sites
                ' Erzeugt Input- und Output-Context-Klasse und führt die LogQuery.ExecuteBatch() aus
                IISAdmin.SaveLogs(String.Format("xy - {0}", Site.Name))
            Next


    BuildSiteStatistik():
    Dim SiteBusinessLogic As New SiteBusinessLogic
            Dim Sites As Sites = SiteBusinessLogic.ReadMultiple
            For Each Site As Site In Sites
          
                   ... ' Hole Statistik zu einer Seite, update in die db und Rückgabe eines IISStatistik-Objekts
               
            Next
            ' Löscht die eben in BuildIISStatistik erzeugte Tabelle wieder
            IISAdmin.ClearLogs()


    ich denke es liegt an den 103 Websites, sprich das Skript braucht länger als das die Methoden BuildIISStatistics() und BuildSiteStatistik() im Webservice fertig sind, denn sie brechen nach exakt 100 Sekunden ab. Wie kann man es ändern bzw. was kann man am II6 unter WS2003 oder in der web.config noch einstellen?

    Ich habe in diesen Dingen noch nicht die Erfahrung und da es sich um ein Live-System handelt, möchte ich auch nicht experimentieren.

    Viele Grüße
    flashsilver
Als RSS Feed in XML ansehen
Powered by Community Server (Commercial Edition)