1

サービスにヒットするすべての http リクエストを傍受する方法はありますか?

例:

getのリクエストがhttp://host/Account/Create1 か所でキャプチャされ、正しいサービスにリダイレクトされます。

http://host/Account/Delete/1単一の場所でキャプチャされ、正しいサービスにリダイレクトされるリクエスト。

これを行う簡単な方法はありますか?

4

1 に答える 1

2

フィルターがどのように機能するかについて具体的な詳細が必要な場合は、ServiceStackの操作の順序を確認できます。

PreRequestFilterのようなものを介してすべてのリクエストをフィルタリングしたい場合は、おそらくAが必要ですRequest.PathInfo

PreRequestFilterすべてのリクエストに対して起動しますが、DTO はまだ逆シリアル化されていません。ServiceStack 独自のRequestLogsFeature.csの使用例を参照してください。

私のシナリオでは、最初にタイプRequestFiltersに基づいて決定を下し、必要requestDto.GetType()に応じてフォールバックできるように使用しhttpReq.PathInfoます。ただし、これは REST リクエストに対してのみ発生します。

AppHost クラスで次のようなことを行います。

this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
{
    if (AppConfig.RequireSsl) 
        new RequireSslAttribute().Execute(httpReq, httpResp, requestDto);

    // Force authentication if the request is not explicitly made public
    if (!AppConfig.IsPublic(httpReq, requestDto.GetType()))
        new AuthenticateAttribute().Execute(httpReq, httpResp, requestDto);
});
于 2013-11-12T00:58:33.377 に答える