2013-08-06 38 views
5

Tôi có C# RESTful interace sau đây.Cách truy xuất thông tin tiêu đề HTTP từ C# Phương thức dịch vụ RESTful

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

nào được thực hiện int lớp sau

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

Tôi muốn vượt qua thành phương pháp này giá trị của lĩnh vực "Authorization" trong tiêu đề http (như mô tả trong dòng nhận xét). Bất cứ ý tưởng làm thế nào tôi có thể lấy giá trị này

+0

có thể sử dụng 'this.Request'? –

+1

ps: bạn có thể tìm thấy http://forums.asp.net/p/1193533/2056217.aspx –

+0

xem xét các thuộc tính mà anh ta sử dụng ở trên phương thức khai báo của anh ấy là an toàn để cho rằng anh ấy sử dụng WCF Rest thay vì ASP.NET Web API. Điều này có nghĩa là thuộc tính 'Request' không hiện diện. – user1908061

Trả lời

5

tôi đã có thể có được những gì tôi đang tìm kiếm bằng cách sử dụng tài sản HttpContext.Current. Sử dụng Request.Headers tài sản tôi đã có thể lấy một danh sách giá trị tên của thông tin tiêu đề

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

Các bạn đã thử

Request.Headers["Authorization"]

+0

Tôi đã cố gắng mà từ lookng tại bài khác, nhưng tôi không có tùy chọn đó (Request.Headers) trong phạm vi. – beaumondo

0

dịch nhanh của @beaumondo vào VB Net, mà đối với một số lý do tôi đã sử dụng một lần nữa trong vài cuối cùng tháng.

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 

Cảm ơn bạn rất nhiều, tôi không biết tại sao tôi không thể tìm về HttpContext.Current.Request.Headers dễ dàng hơn trước.

Các vấn đề liên quan