2017-02-14 2 views
0

Ich sollte einen Web-Service in meiner C# -Anwendung aufrufen. Wenn ich einen Dienstverweis in Visual Studio fügen Sie den Service, in einer Ausnahmesituation zu konsumieren erhalte ich diese Meldung:WCF in "Service-Referenz" Client gibt weniger Informationen in Ausnahme Nachricht als "Web-Referenz" Client

Ein HTTP-Content-Type-Header für SOAP Messaging erforderlich ist und keine gefunden wurde.

Aber wenn ich eine Webreferenz hinzufüge, ist die Nachricht reichhaltiger und das Problem leichter zu verstehen. Der letzte Teil dieser Nachricht ist eine Geschäftsfehlermeldung, die vom Dienst generiert wird.

-Client gefunden Antwort Inhaltstyp ‚‘ ‚aber erwartete‘ text/xml: Ich habe einen ungültigen Authentifizierungs-Token Parameter für diesen Dienst so dass diese Fehlermeldung zurückgegeben zur Verfügung gestellt.

Fehler bei der Anforderung mit der Fehlermeldung:

-

WEBDIENST ERROR: UNAUTHENTICATED_ACCESS

I bevorzugt wurde "Dienstverweis" Ansatz zu verwenden, aber jetzt in Zweifel ich bin. Gibt es eine Möglichkeit, diese Art von Ausnahmen zu verbessern oder rohe Antwort mit "Service-Referenz" zu protokollieren?

+0

Die zweite Nachricht ist nicht klar, es sagt Ihnen, dass der Header leer war, wenn aller Wahrscheinlichkeit nach es wahrscheinlich fehlte und tatsächlich einen Authentifizierungsfehler berichtet, der nur das Wasser matschig macht. –

Antwort

1

Ich denke, die erste Nachricht ist viel klarer.

Es wird Ihnen genau sagen, was das Problem ist, das der HTTP Content-Type-Header in der Serviceantwort fehlt. Während dieser Header nicht zwingend erforderlich ist, sagen die HTTP-Spezifikationen Sie es (von here) verwenden sollte:

Alle HTTP/1.1-Nachricht einen Entity-Body enthält einen Content-Type-Header-Feld enthalten, sollten Sie definieren den Medientyp des dieser Körper.

Microsoft offensichtlich in ihre Proxy-Generation Tooling die Annahme, dass dieser Header immer vorhanden sein wird gebaut.

Und nein, Sie sollten WebReference nicht verwenden. Es ist von .net 1.1

+0

Danke @Tom. Ich stimme Ihnen teilweise zu, aber ich kann den Service nicht ändern und seine Antwort enthält eine hilfreiche Nachricht: ** WEB SERVICE ERROR: UNAUTHENTIZIERTE_ZUGRIFF **. – Morteza

+0

@morteza das ist keine hilfreiche nachricht. Das Problem ist nicht die Authentifizierung. Das Problem ist, dass der Dienst nicht mit der w3-Anleitung übereinstimmt. –

+0

Ich verstehe. Es klingt hier ein Missverständnis. Diese Nachricht ist eine vom Dienst generierte Geschäftsfehlermeldung. Für diesen Dienst wurde ein ungültiger Authentifizierungstokenparameter angegeben, sodass diese Fehlernachricht zurückgegeben wird. – Morteza