Auf unserer ASP.NET MVC-Website im Azure App Service möchten wir eine Zeitüberschreitung für Anforderungen erzwingen, die länger als 15 Sekunden dauern. Hier ist eine einfache Aktion, die immer länger dauert als 15 Sekunden (dh Endlosschleife), die wir mit dem Testen haben ...Azure-App-Service Festlegen von benutzerdefiniertem ConnectionTimeout in ApplicationHost.config
public ActionResult TimeoutTest()
{
var i = 1;
while (true)
{
i++;
}
return new HttpStatusCodeResult(200);
}
standardmäßig, wenn ich auf dieser Aktion in einem Browser ein GET tun, ich lch bekomme nach zwei Minuten einen Fehler "500 - Die Anfrage ist abgelaufen", was mit the "connectionTimeout" default setting in the webLimits section of ApplicationHost.config übereinstimmt.
Also ... wenn ich mich nicht irre, sollte es ausreichen, um diesen ConnectionTimeout Wert auf 15 Sekunden zu ändern. Um dies zu tun, muss man einen transformationsbasierten Ansatz für die Datei ApplicationHost.config (XDT) verwenden, wie in here erläutert.
Ich tue dies mit der folgenden applicationHost.xdt Datei ...
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.applicationHost>
<webLimits xdt:Transform="SetAttributes(connectionTimeout)" connectionTimeout="00:00:15"/>
</system.applicationHost>
</configuration>
... nach dem ich die Datei in der richtigen Stelle hinzugefügt (d: /home/site/applicationHost.xdt). Ich neu gestartet meine Seite und sah in den Protokollen, die die erfolgreich angewandt Transformation wurde:
2016-04-20T08:40:44 Start 'site' site extension transform
2016-04-20T08:40:44 StartSection Executing SetAttributes (transform line 4, 18)
2016-04-20T08:40:44 on /configuration/system.applicationHost/webLimits
2016-04-20T08:40:44 Applying to 'webLimits' element (no source line info)
2016-04-20T08:40:44 Set 'connectionTimeout' attribute
2016-04-20T08:40:44 Set 1 attributes
2016-04-20T08:40:44 EndSection Done executing SetAttributes
2016-04-20T08:40:44 Successful 'D:\home\site\applicationHost.xdt' site extension transform
2016-04-20T08:40:44 sandboxproc.exe complete successfully. Ellapsed = 316.00 ms
[Bearbeiten]: Ich habe überprüft auch die applicationhost.config direkt nach der Transformation, und der neue Wert ist da:
...
</sites>
<webLimits connectionTimeout="00:00:15" />
</system.applicationHost>
<system.webServer>
<asp>
...
Trotz alledem, wenn ich meine Aktionsmethode oben erneut treffe, wird die Zeit nach zwei Minuten anstatt nach 15 Sekunden immer noch überschritten.
Meine Frage: Weiß jemand, warum diese Timeout-Einstellung nicht eingehalten wird?
Ich bin bewusst, this post, die aussieht, als ob es genau den gleichen Ansatz (und schien zu funktionieren?).
Danke, ja, ich bin zu diesen eine bewusst. Es ist auch auf 15 Sekunden eingestellt und scheint auch keinen Unterschied zu machen. – sammy34
Ich habe oben weitere Details hinzugefügt. –