Wie implementiere ich die WebServiceHost-Authentifizierung?
Mir ist bekannt, dass die Authentifizierung in der Klasse "webservicehost" nicht vollständig den Authentifizierungsstandards entspricht (Rückgabe 403 verboten, anstatt nach einem anderen Satz von Anmeldeinformationen zu fragen, wenn der Benutzer falsche Anmeldeinformationen eingibt).
Ich möchte diese grundlegende Authentifizierung (Benutzername und Passwort zu Beginn der Sitzung, HTTPS nicht erforderlich - siehe Bild unten) weiterhin implementieren, da sie meinen Anforderungen für ein kleines Heimprojekt entspricht.
Der Code, den ich für myService habe, lautet wie folgt:
Imports System.IO
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Web
Imports System.ServiceModel.Channels
<ServiceContract()>
Public Class myService
<OperationContract(), WebGet(UriTemplate:="/xml/{argument1}/{argument2}")>
Public Function XML(argument1 As String, argument2 As String) As Stream
requestCounter += 1
Console.WriteLine("xml data request at " & DateTime.Now.ToString() & ", request count= " & requestCounter)
Console.WriteLine(WebOperationContext.Current.IncomingRequest.UserAgent.ToString())
Return _ReturnXML("<xmlresponse><data><argument1>" & argument1 & "</argument1><argument2>" & argument2 & "</argument2></data><server><serverlivesince>" & serverStart.ToString() & "</serverlivesince><pageservetime>" & DateTime.Now.ToString() & "</pageservetime><requestcount>" & requestCounter & "</requestcount></server></xmlresponse>")
'returns the first two parameters, and the time and date
End Function
Private Shared Function _ReturnXML(_result As String) As Stream
Dim data = Encoding.UTF8.GetBytes(_result)
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml; charset=utf-8"
WebOperationContext.Current.OutgoingResponse.ContentLength = data.Length
Return New MemoryStream(data)
End Function
End Class
Ich habe dann ähnlichen Code, um HTML zurückzugeben sowie andere Parameterkombinationen zu akzeptieren.
In meiner Hauptklasse habe ich diesen Service instanziiert und geöffnet als:
Dim varWebService = New WebServiceHost(GetType(MyWebService), New Uri("http://0.0.0.0/"))
varWebService.Open()
Kann mir jemand Code zur Implementierung dieser einfachen Authentifizierung zur Verfügung stellen? Oder zeigst du mir ein ausführliches Tutorial? Danke für jede Hilfe