2013-04-26 85 views
5

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

路线可以被添加到APPHOST后应用程序启动,还是他们都必须配置过程中immediatelly注册步骤?

我想扫描所有组件在启动和提供APPHOST与实施服务栈服务的所有组件,而是让每个模块添加自己的路由(还没有想出确切机制。

我之前沿着这条路走下去,需要知道,如果有可能的配置步骤之后添加路由。

回答

5

所有配置和登记ServiceStackAppHost.Configure()方法内完成,并保持其后不变。

如果你想ENCA在模块中的路由psulate注册比打包为一个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()); 
+0

当在注册的路线,在APPHOST,泛型参数被一个请求类型,但这里是一个服务? – epitka 2013-04-29 13:35:09

+0

@epitka更新,RegisterService采用服务类型,而Routes.Add采用请求DTO类型 – mythz 2013-04-29 14:44:15