2 Stimmen

benutzerdefinierte Kopfzeile für die Sicherheitsauthentifizierung in wcf hinzufügen

Ich verwende webHttpBinding, um die wcf-Services freizulegen und JSON-Format zurückzugeben, ich möchte einige Sicherheitsauthentifizierung in Header wie machen:

CustomerServiceClient client = new CustomerServiceClient();

            using (OperationContextScope scope = new OperationContextScope(client.InnerChannel))
            {
                MessageHeader header = MessageHeader.CreateHeader("username", "http://tempuri.org", "testuser");

                OperationContext.Current.OutgoingMessageHeaders.Add(header);

            }

aber ich bekam diese Fehlermeldung: Envelope Version 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' unterstützt nicht das Hinzufügen von Message Headers.

Ich habe lange Zeit gegoogelt, aber kein Ergebnis für mich.

Danke.

1voto

Mike Goodwin Punkte 8610

Ich glaube, der MessageHeader ist für SOAP-Header und SOAP-Dienste bestimmt, wie in der ersten Zeile der MSDN-Dokumentation für die MessageHeader-Klasse angegeben:

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messageheader.aspx

Da Sie webHttpBinding verwenden, vermute ich, dass Sie einen REST-Dienst und nicht einen SOAP-Dienst erstellen. In diesem Fall sollten Sie die Klasse System.Net.WebClient verwenden:

http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx

oder ähnlich und setzen Sie die Kopfzeile mit der Eigenschaft Headers. Um das klarzustellen, werden dadurch HTTP-Header gesetzt, nicht SOAP-Nachrichtenheader, da Sie kein SOAP verwenden.

Wenn Sie wirklich einen Benutzernamen (und vermutlich ein Kennwort) wie in Ihrem Beispielcode festlegen möchten, können Sie die Credentials-Eigenschaft des WebClients verwenden, anstatt den Autorisierungskopf mithilfe der Headers-Eigenschaft festzulegen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X