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