Die HTTP-Fehlerantwort überschreibt den Antworttext für nicht lokale Clients

8

Ich erstelle einen Sperrmechanismus für einige öffentliche Seiten, die nur einem Benutzer erlauben sollten, sie gleichzeitig zu bearbeiten. Der Client führt GET-API-Aufrufe an den Server aus, um eine Sperre anzufordern, die ein MVC ActionResult-Objekt zurückgibt. Aus irgendeinem Grund, wenn ich das Programm lokal ausführe und ich ein new HttpConflictResult("Cannot acquire lock", message); zurückgebe (das anzeigt, dass das Erfassen der Sperre fehlgeschlagen ist), funktioniert es gut. Die Fehlermeldung wird ordnungsgemäß gesendet und empfangen und kann in einer Warnmeldung oder anderen erforderlichen Informationen angezeigt werden. Wenn ich jedoch remote auf die Site zugreife, wird die Nachricht mit "Die Seite wurde nicht angezeigt, weil ein Konflikt aufgetreten ist" überschrieben. Mache ich etwas falsch oder ist dies ein "Feature" von IIS oder etwas? Wenn ja, gibt es einen Weg darum herum, damit ich immernoch die Nachricht bekommen kann, die ich dem Kunden wünsche?

Vielen Dank im Voraus für jede Hilfe!

EDIT: Sorry, vergessen, dass HttpConflictResult eine geerbte Klasse war. Hier ein paar Infos dazu:

%Vor%

Lass es mich wissen, wenn ich etwas anderes ausgelassen habe. Nochmals vielen Dank!

    
Chris 20.05.2011, 18:03
quelle

1 Antwort

14

Wenn Sie Fehlercodes festlegen (dh http-Statuscodes in den Bereichen 4xx oder 5xx) und Sie unter IIS 7 ausgeführt werden, müssen Sie sicherstellen, dass Sie IIS angewiesen haben, die Standardfehlermeldungen nicht zu verwenden.

Sie tun dies mit dem Parameter TrySkipIisCustomErrors auf der Seite Response Objekt. Versuchen Sie, Ihr HttpErrorResult wie folgt zu ändern:

%Vor%     
Zhaph - Ben Duguid 23.05.2011, 14:47
quelle

Tags und Links