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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage