Ich habe einen Web-Service, die grundlegende Authentifizierung erfordern. Ich teste es mit einem kleinen Java-Programm.Basic-Authentifizierung für Web-Service mit C#
im Wesentlichen:
...
String authorization = s + ':' + (s1 != null ? s1 : "");
authorization = Base64.getEncoder().encodeToString(authorization2.getBytes());
httpurlconnection.setRequestProperty("Authorization", "Basic " + authorization);
....
Dies funktioniert gut. Aber ich muss das mit einem C# -Programm behandeln. Ich füge eine "Service-Referenz" in meinem Projekt hinzu, indem ich die wsdl-Datei importiere. Nach viel suchen, denke ich, das der Deal wäre:
WSHttpBinding binding = new WSHttpBinding();
binding.Name = "pisconfigwebserviceSOAP";
EndpointAddress epAdd = new EndpointAddress(remoteAddress);
myWebserviceClient client = new myWebserviceClient(binding, epAdd);
ContractDescription cd = ContractDescription.GetContract(typeof(myWebservice), typeof(myWebserviceClient));
client.Endpoint.Contract = cd;
// this part should add the Basic Authentication to the header. Or not?
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) {
var httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers.Add(HttpRequestHeader.Authorization, "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(mUserName + ":" + mPassword)));
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, httpRequestProperty);
int result = client.AddOrUpdate(obj);
}
Ich weiß nicht, was ich falsch mache, viele, viele verschiedene Dinge versuchen, und ich bin hier kleben. Ich würde jede Hilfe zu schätzen wissen. Danke