2013-08-06 7 views
5

Ho il seguente interasse REST di C#.Come recuperare le informazioni dell'intestazione HTTP da un metodo di servizio R # RESTful

[WebGet(UriTemplate = "requires-authorization", ResponseFormat = WebMessageFormat.Json)] 
    [OperationContract] 
    string MethodRequiringAuthorization(); 

Quale implementato int la seguente classe

public string MethodRequiringAuthorization() 
    { 
     //var authorisazation = HTTP header authorization field 
     return "{Message" + ":" + "You-accessed-this-message-with-authorization" + "}"; 
    } 

desidero passare in questo metodo il valore del campo "Autorizzazione" nell'intestazione http (come descritto nella linea commentata). Tutte le idee come posso recuperare questo valore

+0

forse usando 'this.Request'? –

+1

ps: potresti trovare questo utile http://forums.asp.net/p/1193533/2056217.aspx –

+0

Considerando gli attributi che usa sopra la sua dichiarazione di metodo, si può presumere che utilizzi WCF Rest invece di ASP.NET Web API. Ciò significa che la proprietà 'Request' non è presente. – user1908061

risposta

5

sono stato in grado di ottenere quello che stavo cercando di utilizzare la proprietà HttpContext.Current. Usando la proprietà Request.Headers sono stato in grado di recuperare una lista valori nome delle informazioni di intestazione

public string MethodRequiringAuthorization() 
    { 
     HttpContext httpContext = HttpContext.Current; 
     NameValueCollection headerList = httpContext.Request.Headers; 
     var authorizationField = headerList.Get("Authorization");    
     return "{Message" + ":" + "You-accessed-this-message-with-authorization" + "}"; 
    } 
2

Hai provato

Request.Headers["Authorization"]

+0

. L'ho provato guardando un altro post, ma non ho quell'opzione (Request.Headers) in scope. – beaumondo

0

traduzione rapida di @beaumondo in VB Net, che per qualche motivo ho usato ancora per gli ultimi mesi.

Private Function GetAuthorizationFromHeader() As String 
    Dim currentContext As HttpContext = HttpContext.Current 
    Dim headerList As NameValueCollection = currentContext.Request.Headers 
    Dim authorizationField As String = headerList.Get("Authorization") 
    Return authorizationField '"{Message" + ":" + "You-accessed-this-message-with-authorization" + "}"message-with-authorization" + "}" 
End Function 

Grazie così tanto, non so perché non ho potuto trovare su HttpContext.Current.Request.Headers facile prima.

Problemi correlati