【问题标题】:ServiceStack: Adding routes dynamicallyServiceStack:动态添加路由
【发布时间】:2013-04-29 22:54:14
【问题描述】:

我还没有尝试过,但我希望每个模块(Silverlight)都注册自己的路由,而不是在应用程序启动中添加它。

可以在应用启动后将路由添加到 AppHost,还是必须在配置步骤中立即注册?

我正在考虑在启动时扫描所有程序集,并为 AppHost 提供所有实现服务堆栈服务的程序集,但让每个模块添加自己的路由(尚未弄清楚确切的机制。

在我走这条路线之前,需要知道是否可以在配置步骤之后添加路线。

【问题讨论】:

    标签: servicestack


    【解决方案1】:

    ServiceStack 中的所有配置和注册都应在 AppHost.Configure() 方法内完成,并且此后保持不变。

    如果您想将路由注册封装在模块中,而不是将其打包为Plugin 并在IPlugin.Register(IAppHost) 上手动注册。

    这里有一些注册路由的不同方法:

    public class MyModule : IPlugin
    {
        public void Register(IAppHost appHost)
        {
            appHost.Routes.Add<MyRequestDto>("/myservice", "POST PUT");
    
            appHost.Routes.Add(typeof(MyRequestDto2), "/myservice2", "GET");
    
            appHost.RegisterService(typeof(MyService), "/myservice3"); 
        }
    }
    

    然后在您的 AppHost.Configure 中注册插件,例如:

    Plugins.Add(new MyModule());
    

    【讨论】:

    • 注册路由时,在AppHost中,泛型参数是请求类型,但这里是服务?
    • @epitka 更新,RegisterService 采用 Service 类型,而 Routes.Add 采用 Request DTO 类型
    猜你喜欢
    • 2021-06-12
    • 2014-12-25
    • 1970-01-01
    • 2018-11-14
    • 2012-05-31
    • 1970-01-01
    • 2018-06-29
    • 2014-03-13
    • 2018-07-27
    相关资源
    最近更新 更多