2009-04-28 6 views
2

Angenommen, ich habe einen Web-Service, der basierend auf einem übergebenen Benutzer eine Sammlung von Bildern zurückgibt. Jetzt rufe ich den Webservice mit einem ungültigen Benutzer an. Der Aufruf löst eine UnauthorizedAccessException mit einer Nachricht aus, die besagt, dass der Benutzer nicht berechtigt ist, die Sammlung abzurufen.Wo/wie lokalisiere ich Exceptions, die in einem Web-Service ausgelöst wurden?

Ich möchte diese Nachricht lokalisiert werden. Wo lokalisiere ich diese Nachricht auf der Clientseite basierend auf einem Fehlercode? Oder übergebe ich einen "Sprache" -Parameter an die Methode überhaupt? Verwende ich HTTP-Statuscodes, damit der Client die Nachricht lokalisieren kann?

Antwort

2

Fehlercodes sind bei Webdiensten genauso schlecht wie im Allgemeinen, und aus dem gleichen Grund - wenn Sie nach dem Aufruf des Dienstes alle Anrufer nach Fehlercodes überprüfen müssen, werden einige Anrufer dies nicht tun.

Sie sollten Ausnahmen in den Dienst werfen. Diese Ausnahmen werden in SOAP-Fehler umgewandelt. Auf dem Client erscheinen diese als Ausnahmen (zumindest für .NET-Clients). Wenn Sie die Message-Eigenschaft dieser Ausnahmen anzeigen möchten, liegt das an Ihnen. Wenn Sie sich entscheiden, es anzuzeigen, dann ist es auch an Ihnen, es zu lokalisieren - auf dem Client.

Betrachten Sie - andernfalls müssen Sie dem Dienst die Kultur des Clients mitteilen, nur der Dienst kann lokalisierten Text zurück an den Client senden. Es ist besser, diese Informationen einfach auf dem Client zu speichern.

+0

Okay, das scheint mir auch natürlicher. Ich werde die Lokalisierung auf dem ExceptionType basieren. Dies hält auch meinen serverseitigen Code sauberer. –

+0

Der Verweis auf meine gelöschte Antwort wurde entfernt. Beachten Sie, dass SOAP immer noch einen FaultCode zurückgibt, den der Client als lokale Ausnahme erneut auslöst. Persönlich halte ich das für einen sinnlosen Mechanismus. –

+0

SOAP-Fehler enthalten einen FaultCode, aber es dient nur dazu, den Fehler als Serverfehler, Clientfehler usw. zu kategorisieren. Es handelt sich nicht um einen Fehlercode. Beachten Sie, dass WCF und die meisten Java-Plattformen Fehlerbeschreibungen in der WSDL unterstützen. Der Client erhält stark typisierte Ausnahmen, nicht nur "SoapException". Es ist nur ASMX, das rückwärts ist. –

Verwandte Themen