Domanda

Vorrei utilizzare la classe .NET HttpListener per intercettare le richieste al mio selfhosted (WebServiceHost) WCF Data Service al fine di aggiungere l'intestazione "WWW-Authenticate" alla risposta (per l'autenticazione utente). Ma sembra che la HttpListener non intercetta le richieste che vanno al mio Dataservice. Il HttpListner lavora per diversi percorsi che bene. Esempio:
HttpListner Prefisso: http: // localhost / somepath /
Works: < a href = "http: // localhost / somepath /" rel = "nofollow noreferrer"> http: // localhost / somepath /
non funziona: http: // localhost / somepath / myWCFDataService

E 'possibile intercettare anche le richieste che vanno ad un Servizio di selfhosted dati WCF (WebServiceHost) con la HttpListner?
Qui ci sono i frammenti di codice rilevanti ...

Hosting WCF DataService:

WebServiceHost dataServiceHost = new WebServiceHost(typeof(MyWCFDataService));
WebHttpBinding binding = new WebHttpBinding();
dataServiceHost.AddServiceEndpoint(typeof(IRequestHandler), binding, 
    "http://localhost/somePath/myWCFDataService");
dataServiceHost.Open();

Il HTTP Listner:

HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://localhost/somePath/");
httpListener.AuthenticationSchemes = AuthenticationSchemes.Anonymous;
httpListener.Start();

while (true)
{
    HttpListenerContext context = httpListener.GetContext();
    string authorization = context.Request.Headers["Authorization"];

    if (string.IsNullOrEmpty(authorization))
    {
         context.Response.StatusCode = 401;
         context.Response.AddHeader("WWW-Authenticate", "Basic realm=\"myDataService\"");
         context.Response.OutputStream.Close();
         context.Response.Close();
    }
}

C'è un modo migliore per fare l'autenticazione di base HTTP all'interno di WCF Data Services? Ho wan't di essere in grado di autenticare tramite la finestra di login del browser web.

Molte grazie,
Jeho

È stato utile?

Soluzione

Si sta abbaiando contro l'albero sbagliato scherzi con proxy tramite HttpListener. Dai un'occhiata alla questo .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top