HTTP-Fehler 413, Anforderungseinheit zu groß

  • Betrifft: Microsoft Exchange Server 2007
  • System: Microsoft Windows Server 2003 R2 x64 Edition, Microsoft Windows Server 2008 x64 Edition, Microsoft Windows Server 2008 R2
  • Problem: Der Versand von Emails mit Anhang über Exchange Server Konto bei mobilen Geräten (via ActiveSync) funktioniert nicht. Auf den mobilen Geräten erhält man nur eine allgemeine Fehlermeldung. Jedoch in den Logdateien beim Internet Information Service (IIS) sieht man den HTTP Fehler 413: Anforderungseinheit zu groß. Übertragung erfolgt via SSL verschlüsselt.

 

Hintergrund

Mobile Geräte, vor allem Smartphones können mit dem Microsoft Exchange Server über ActiveSync synchronisieren. Hierbei werden neben Kalender, Kontakte, Aufgaben auch Emails synchronisiert. Natürlich inklusive Anhang. Dementsprechend sollte natürlich auch der Versand von Anhang möglich sein.

Leider gibt es hierbei mit Android und Windows Phone manchmal so einige Probleme. Der Versand von Emails mit Anhang ist bei diesen Geräten nicht möglich. Dagegen wunderbar klappt das Ganze mit Windows Mobile bzw. bei allen mobilen Geräten wenn man keinen Anhang versendet. Die Geräte selbst liefern leider keine weiteren Hinweise. Man erhält wenn überhaupt nur einen "allgemeinen Fehler".

Dagegen kann man auf dem zugehörenden Webserver, nämlich den IIS manchmal eine weitaus interessantere Fehlermeldung finden:

Deutsch Englisch
HTTP-Fehler 413: Anforderungseinheit zu groß HTTP Error 413: Request entity too large

 

Damit wird angedeutet, dass die empfangene Anfrage durch das mobile Gerät zu groß ist – also zu viele Bytes benötigt. Genauer wurde eine Anfrage größer als 128 kB gesendet. Bei einem verschlüsseltem Zugriff muss dementsprechend auch die Anfrage über SSL erfolgen. Damit werden allein schon wegen der Verschlüsselung größere Zeichen verwendet. Die Grenze wird mit der ab IIS 6.0 eingefügten Variabel UploadReadAheadSize gesteuert.

 

Für die Behebung gibt es zwei Ansatzpunkte. Der erste ist die Erhöhung der zuvor genannten Variabel (sollte aber nicht zu großzügig gewählt werden) oder alternativ eine Änderung der SSL Einstellung am IIS, damit Clientzertifikate ignoriert werden.

 

 

Behebung, deaktivieren der Clientzertifikate

Es macht natürlich Sinn, die Einstellung nur für die mobilen Geräte zu ändern. Also den entsprechenden Pfad für "Microsoft-Server-ActiveSync" aufrufen.

iis6_activesync_pfad

Bei IIS 6.0 muss man mittels Rechtklick in die "Eigenschaften", dann auf das Register "Verzeichnissicherheit" und bei "Sichere Kommunikation" auf "Bearbeiten" und im neu erscheinenden Fenster bei "Clientzertifikate" die Option "Clientzertifikate ignorieren" auswählen. Danach alle Fenster mit "Ok" schließen.

iis6_clientzertifikat_deaktivieren

Bei IIS 7.x ist es etwas anders. Sobald man hier ebenfalls den korrekten Ordner gefunden hat einfach diesen markieren und im Hauptfenster die Option "SSL-Einstellungen" aufrufen.

iis7_ssl_einstellungen

Danach einfach wieder bei "Clientzertifikate" die Option "Ignorieren" wählen und auf "Übernehmen" klicken.

iis7_clientzertifikat_deaktivieren

Damit sollten sofort ohne Neustart alle mobilen Geräte Emails mit Anhang versenden können.

 

Behebung, Erhöhung von UploadReadAheadSize

Bei IIS 6.0 benötigt man das Skript "adsutil.vbs". Der Wert wird in Byte angegeben. Manchmal steht im Internet mit Kilobytes, aber ist falsch. Für die Änderung auf 200 kB und der Website ID 1 benötigt man folgenden Befehl im Konsolenfenster. Natürlich muss zuvor der korrekte Pfad zum Skript aufgerufen werden:

cscript adsutil.vbs set w3svc/1/uploadreadaheadsize 204800

 

Ab IIS 7.x gibt es nicht mehr das Skript "adsutil.vbs". Dafür aber die Datei "applicationHost.config". Für die Änderung empfehlt sich die Anwendung "appcmd.exe", die man im Pfad "\Windows\system32\inetsrv" findet. Also erneut das Konsolenfenster öffnen und in den korrekten Pfad wechseln.

appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize:"204800" /commit:apphost

Andyt

Ich bin Blogger, Sporttaucher, Roadster-Fahrer und interessiere mich für Technik. Übrigens, folgen Sie mir auf verschiedenen sozialen Netzwerken oder abonniere meinen Blog.

Dieser Beitrag hat 2 Kommentare

  1. Kaspar Brönnimann

    Guten tag

    Ich habe eine Frage: Kann dieser Befehl (appcmd.exe set config -section:system.webserver/serverruntime/uploadreadaheadsize:”204800″ /commit:apphost) auch nur spezifisch für EAS angewendet werden? Das Problem ist sehr drängend, ich sollte heute noch eine Lösung haben.

    Vielen Dank und viele Grüsse
    Kaspar Brönnimann

    1. Andyt

      Hi,

      Also UploadReadAheadSize ist eine Servereinstellung. Mir ist nicht bekannt, dass man dies nur für eine Anwendung bzw. Verzeichnis verstellen könnte. Es gibt zwar für andere Variablen diese Unterteilung, aber hier in diesem Fall gilt es für die ISAPI Erweiterung.

      So nebenbei: Durch die Erhöhung des Wertes kommt es nicht wirklich zu einer Erhöhung eines Sicherheitsrisiko – zumindest lt. meinen jüngsten Recherchen. Die Last für den Server sollte ebenso gleich bleiben.

Schreibe einen Kommentar