5

如此简单,但我找不到任何信息或示例来准确解释应该在哪里发生这种情况。我猜此时它应该在 Configure 方法中。

谢谢你,斯蒂芬

全球的

public class AppHost : AppHostBase
{
    public AppHost() : base("Web Services", typeof(ContactsService).Assembly) { }

    public override void Configure(Container container)
    {
        //Set JSON web services to return idiomatic JSON camelCase properties
        ServiceStack.Text.JsConfig.EmitCamelCaseNames = true;

        //Show StackTrace in Web Service Exceptions
        SetConfig(new EndpointHostConfig { DebugMode = true });


        //Register any dependencies you want injected into your services
        container.Register<ICacheClient>(new MemoryCacheClient());

/*            // Redis
        container.Register<IRedisClientsManager>(c => new PooledRedisClientManager());
        container.Register<IRepository>(c => new Repository(c.Resolve<IRedisClientsManager>()));*/


        container.Register<IRepository>(new Repository());
        container.Register<IBusinessService>(new BusinessService());

        //Configure Custom User Defined REST Paths for your services
        /*ConfigureServiceRoutes();*/

        //Add a request filter to check if the user has a session initialized
        /*this.RequestFilters.Add((httpReq, httpResp, requestDto) =>
        {
            var sessionId = httpReq.GetCookieValue("user-session");
            if (sessionId == null)
            {
                httpResp.ReturnAuthRequired();
            }
        });*/


        RequestFilters.Add((httpReq, httpResp, requestDto) => new LogRequestAttribute().Execute(httpReq, httpResp, requestDto));

        Plugins.Add(new SwaggerFeature());
    }

    public static void Start()
    {
        new AppHost().Init();
    }
}

更新

public AppHost() : base("Web Services", typeof(ContactsService).Assembly) { }

public override void Configure(Container container)
{
    ....

    ConfigurePlugins();
}

private void ConfigurePlugins()
{
    Plugins.Add(new ProtoBufFormat());
    Plugins.Add(new RequestLogsFeature());
    Plugins.Add(new SwaggerFeature());
}

private void ConfigureServiceRoutes()
{

}

public static void Start()
{
    new AppHost().Init();
}
4

1 回答 1

4

没有信息,因为ServiceStack中的插件可以添加到方法中的任何位置。这适用于所有 ServiceStack 配置和依赖项、服务、过滤器等的注册。AppHost.Configure()

在方法中添加它们的位置无关紧要,AppHost.Configure()因为它们仅在 ServiceStack 被调用后才被初始化。

然而,它们以与添加它们相同的顺序被初始化(即被IPlugin.Register()调用)。

于 2013-04-07T00:39:11.680 回答