1

次のコントラクトを使用してWCF RESTサービスを実装するとします。

[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 によって呼び出されるメソッドのシグネチャを見つけるにはどうすればよいですか?

4

2 に答える 2

1

他の答えは私を正しい道に導きましたが、実際には私の質問には答えませんでした。

後でこのリンクを見つけて、実用的な解決策を見つけました: http://tech.blog.oceg.org/2009/04/authorizing-rest-calls-in-wcf.html

ただし、必要以上に複雑であることがわかりました。.NET 4.5 (私が取り組んでいるもの) では、次のことができます。

ServiceHost.ApplyConfiguration オーバーライドから ServiceAuthorizationManager を登録しました。

this.Authorization.ServiceAuthorizationManager = 
       new MyServiceAuthorizationManager();

次に、その CheckAccessCore メソッドで、以下のメソッドを呼び出して、リクエストがディスパッチされるメソッドの名前を指定しました。

private string GetOperationName(OperationContext operationContext)
{
    return messageProperties["HttpOperationName"] as string;
}
于 2013-04-20T23:48:35.443 に答える
1

IDispatchOperationSelectorを使用する必要があると思います。

この記事も参照してください: WCF 拡張性 – 操作セレクター

于 2013-04-11T04:47:57.423 に答える