2013-08-06 39 views
5

我有以下C#REST風格的接口。如何從C#REST風格的服務方法中檢索HTTP頭信息

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

這是INT以下類

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

我想在HTTP頭中傳遞到該方法中,字段「授權」的值(如在註釋行中描述)來實現。任何想法如何,我可以檢索此值

+0

也許使用'this.Request'? –

+1

ps:你可能會發現這個有用http://forums.asp.net/p/1193533/2056217.aspx –

+0

考慮到他在方法聲明之上使用的屬性,可以安全地假設他使用WCF Rest而不是ASP.NET Web API。這意味着'Request'屬性不存在。 – user1908061

回答

5

我能得到什麼,我一直在尋找使用HttpContext.Current屬性。使用Request.Headers財產我能夠檢索的報頭信息的名稱值列表

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

你試過

Request.Headers["Authorization"]

+0

我試圖從另一篇文章中查找,但我沒有在範圍內的選項(Request.Headers)。 – beaumondo

0
@beaumondo的

快速翻譯成VB.NET中,由於某種原因我已經再次使用過去數個月。

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 

太感謝你了,我不知道爲什麼我找不到任何關於前HttpContext.Current.Request.Headers容易。

相關問題