Ich bin ein API-Schlüssel für einen grundlegenden Webdienst implementieren, die ich habe. Ich verwende eine Implementierung hier gefunden: https://blogs.msdn.microsoft.com/rjacobs/2010/06/14/how-to-do-api-key-verification-for-rest-services-in-net-4/ Ich weiß, ich habe es alle implementiert und Setup auf der Service-Seite, aber ich bin mir nicht sicher, wie den API-Schlüssel von meinem Client übergeben. Wenn ich den Webdienst auf Anfrage debugge, erhalte ich für meine HttpRequestMessage-Abfragezeichenfolge nichts zurückgegeben. Hier ist der Code:Hinzufügen von API-Schlüssel zu Header für WCF-Dienst zu überprüfen
Web-Service-Auth-Manager:
public string GetAPIKey(OperationContext oc)
{
// get the request
var request = oc.RequestContext.RequestMessage;
// get HTTP request message
var requestProp = (HttpRequestMessageProperty)request.Properties[HttpRequestMessageProperty.Name];
// get the actual query string
NameValueCollection queryParams = HttpUtility.ParseQueryString(requestProp.QueryString);
// return APIKey if there, NameValueCollection returns null if not present
return queryParams[APIKEY];
}
Client-Verbrauch (der Teil, der zählt):
using (WebClient client = new WebClient())
{
client.Headers.Add("Content-Type", "application/json");
client.Headers.Add("APIKey","my_generated_key");
client.Encoding = Encoding.UTF8;
Console.WriteLine(client.UploadString("http://my_local_host/my.svc/myCall", "POST", data));
}
Während Debug wird der Web-Service immer immer leer queryParams in der Namevaluecollection weil die Abfragezeichenfolge leer ist. Wie füge ich zu dieser Abfragezeichenfolge während der Anfrage vom Client hinzu?