weboperationcontext

___ qstnhdr ___ WCF 4 REST-Dienst kann keine StatusDescription, nur StatusCode, zurückgeben ___ qstntxt ___

Ich migriere gerade meinen WCF RESTful-Service von .NET 3.5 (Starter Kit) nach .NET 4. Ich habe mein Projekt mit einer WCF Rest Service-Vorlage aus Visual Studio 2010 gestartet. Ich musste herausfinden, wie ich mein Autorisierungsschema (früher mit RequestInterceptor) mit ServiceAuthorizationManager beibehalten konnte. Nach etwas Arbeit und Recherchen habe ich es geschafft. Aber jetzt habe ich ein Sicherheitsproblem. Mein Dienst wurde verwendet, um meinen Kunden über Verarbeitungsfehler mithilfe des HTTP-Statuscodes und einer kurzen Beschreibung zu informieren. Ich habe WebOperationContext an vielen Stellen meiner Servicemethode verwendet, um den Kunden zu beschreiben, was schief gelaufen ist:

%Vor%

Aber in WCF 4 funktioniert nur StatusCode - StatusDescription schlägt automatisch fehl. Ich kann nicht herausfinden warum. Meine einzige Vermutung ist, dass WebOperationContext in diesem neuen WCF 4-Szenario nicht funktioniert, und ich stattdessen OperationContext verwenden sollte, aber das funktioniert auch nicht. Die folgende Methode wird in meiner benutzerdefinierten Klasse verwendet, um den ServiceAuthorizationManager zu erweitern und Clients darüber zu informieren, dass auf eine Anfrage kein Zugriff möglich war, da der AuthDigest fehlerhaft erstellt wurde:

%Vor%

Auch wenn hier OperationContext direkt verwendet wird (ohne WebOperationContext), funktioniert StatusDescription nicht.

Was fehlt mir hier? Warum kann so ein kleines Ding von .NET 3.5 zu 4 brechen?

    
___ answer4738620 ___

OK! Hier ist, was ich herausgefunden habe. Mit meinem Code ist nichts falsch. Es ist nichts falsch mit .NET Framework 3.5 oder 4.0.

Das Problem ist asp.net Entwicklungsserver. Wenn Sie Ihre Dienstanwendung debuggen, wird sie wahrscheinlich auf dem ASP.net-Entwicklungsserver gehostet und ignoriert die von der Anwendung angegebene Statusbeschreibung vollständig. Verweisen Sie auf diese Frage .

Die Bounty an @Oleg vergeben, die zumindest versucht hat, mir zu helfen.

    
___ answer5354764 ___

Stellen Sie sicher, dass Sie vom NULL-Objekt der Servicemethode zurückkehren, damit die Beschreibung des Statuscodes in den Antwort-Kopfzeilen sichtbar ist. Es funktionierte für mich.

    
___ tag123rest ___ REST (Representational State Transfer) ist eine Art von Softwarearchitektur für verteilte Hypermedia-Systeme wie das World Wide Web. Es hat im Vergleich zu RPC-Architekturen wie SOAP aufgrund der intrinsischen Entkopplung von Client von Server, die von einer einheitlichen Schnittstelle zwischen heterogenen Systemen herrührt, an Popularität zugenommen. ___ tag123httpstatuscodes ___ HTTP-Statuscodes sind standardisierte Codes, die in einer HTTP-Webantwort zurückgegeben werden. Fragen darüber, warum ein Service (unerwartet) einen Statuscode zurückgibt, sollten dieses Tag nicht verwenden. ___ tag123wcf ___ Windows Communication Foundation ist ein Teil von .NET Framework, das ein einheitliches Programmiermodell für die schnelle Erstellung von serviceorientierten Anwendungen bereitstellt. ___ answer4733179 ___

Ein potenzielles Problem besteht darin, dass Sie den RequestContext auf null setzen:

%Vor%

Eine andere Möglichkeit ist, dass der Parameter "description" nicht gesetzt ist.

Auch auf der Clientseite überprüfen Sie:

%Vor%

Eine weitere Möglichkeit, könnten die Werte nach dem Aufruf von returnCode überschrieben worden sein?

    
___ tag123operationcontext ___ hilf uns dieses Wiki zu bearbeiten ___ tag123weboperation context ___ Der WebOperationContext kann in WCF-Diensten verwendet werden, um auf Eigenschaften von Webanforderungen und -antworten zuzugreifen. ___ answer4686417 ___

Ich empfehle Ihnen, %code% in .NET 4.0 zu verwenden. Lesen Sie zum Beispiel "Einführung in WCF WebHttp-Dienste in .NET 4 ". Probieren Sie

aus %Vor%     
___
4
Antworten

WCF 4 REST-Dienst kann keine StatusDescription, nur StatusCode, zurückgeben

Ich migriere gerade meinen WCF RESTful-Service von .NET 3.5 (Starter Kit) nach .NET 4. Ich habe mein Projekt mit einer WCF Rest Service-Vorlage aus Visual Studio 2010 gestartet. Ich musste herausfinden, wie ich mein Autorisierungsschema (früher...
05.08.2010, 20:37