webservicehost クラスでの認証が認証標準に完全に準拠していないことは承知しています (ユーザーが間違った資格情報を入力したときに、別の資格情報のセットを要求するのではなく、403 禁止を返します)。
この基本認証 (セッション開始時のユーザー名とパスワード、HTTPS は不要 - 下の図を参照) は小規模なホーム プロジェクトのニーズに合っているため、引き続き実装したいと考えています。
myService のコードは次のとおりです。
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
次に、HTML を返すだけでなく、他のパラメーターの組み合わせを受け入れる同様のコードがあります。
私の Main クラスでは、このサービスを次のようにインスタンス化して開きました。
Dim varWebService = New WebServiceHost(GetType(MyWebService), New Uri("http://0.0.0.0/"))
varWebService.Open()
この単純な認証を実装するためのコードを誰かに提供してもらえますか? または、完全なチュートリアルを教えてください。助けてくれてありがとう