最終的に、私は設定プラグインresponsefiltersを作成する手順に従っ
public class AuthResponseFilter : ICustomResponseFilter
{
public Action<IHttpRequest, IHttpResponse, object> GetAction()
{
// code implementation that returns Action type
}
}
3)データベースのフィルタのタイプ名を保存しました。(configuratイオン)。
table: SSResponseFilters
important columns:
typename: varchar (values in format: <namespace>.<classname>)
assemblyname: varchar (values in format: <assemblyname>)
site: varchar (possible values: public|storage)
この構成では、カスタムAPPHOSTクラスが使用されているweb.configファイル
4)に例えば、また、他のどこ行ってもよいです。そのクラスの中には、フィルタが登録されています。
public class CustomAppHost : AppHostBase
{
private List<Action<IHttpRequest, IHttpResponse, object>> responseFilterActions = null;
public CustomAppHost(serviceType, serviceName, assemblies) : base(serviceName, assemblies)
{
List<ICustomResponseFilter> rfList = GetListOfConfiguredResponseFilters(serviceType);
/*In GetListOfConfiguredResponseFilters method, serviceType is taken from config and it determines which site we are in currently and retrieves the configured types explained in above step for that site. We need to use reflection here.*/
this.responseFilterActions = GetActionsListFromResponseFilters(rfList);
/*GetActionsListFromResponseFilters method calls the GetAction method of the filters and generates a list of Action types and returns that list*/
}
public override void Configure(Funq.Container container)
{
// other code ..
EndpointHost.ResponseFilters.AddRange(responseFilterActions);
}
}
5)すべてのサイトで、インターフェイスを含むdllは必須です。新しいレスポンスフィルタがプラグインされるときはいつでも、インタフェースを実装しているクラスを含むdllを記述し、フィルタのDBにエントリを作成することができます。レスポンスフィルタDLLは、必要な場合にのみ使用できます。サービススタックDLL(AppHost)はすべてのサイトで同じです。