2013-04-10 1 views
1

Предположим, что я реализую услугу WCF REST со следующим контрактом.Найти, какой метод WCF отправит запрос RESTful на

[ServiceContract] 
interface INotesService 
{ 
    [OperationContract] 
    [WebInvoke(Method = "GET", 
     UriTemplate = "notes/{id}")] 
    Note GetNote(string id); 

    [OperationContract] 
    [WebInvoke(Method = "GET", 
     UriTemplate = "notes")] 
    IEnumerable<Note> GetNotes(); 
} 

Теперь у меня есть HttpModule в трубопроводе, чтобы сделать разрешение, но этот код должен знать, какой метод будет послан запрос. Как найти подпись метода, который будет вызываться WCF?

ответ

1

Даже если другой ответ поставил меня на правильный путь, это на самом деле не ответить на мой вопрос.

позже я нашел эту ссылку, которая дала мне рабочий раствор: http://tech.blog.oceg.org/2009/04/authorizing-rest-calls-in-wcf.html

Однако, я нашел, что это будет более сложным, чем это необходимо. В .NET 4.5 (это то, что я сейчас) вы можете сделать следующее.

Я зарегистрировал свой ServiceAuthorizationManager из переопределения ServiceHost.ApplyConfiguration.

this.Authorization.ServiceAuthorizationManager = 
     new MyServiceAuthorizationManager(); 

Затем в методе CheckAccessCore, я назвал метод ниже, чтобы дать мне имя метода, к которому запрос будет послан.

private string GetOperationName(OperationContext operationContext) 
{ 
    return messageProperties["HttpOperationName"] as string; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^