我还没有尝试过,但我希望每个模块(Silverlight)注册自己的路由,而不是在应用程序启动时添加它。
应用程序启动后可以将路由添加到AppHost,还是必须在配置步骤中立即注册?
我正在考虑在启动时扫描所有程序集,并为AppHost提供实现服务堆栈服务的所有程序集,但让每个模块添加自己的路径(还没有找到确切的机制。
在我走这条路线之前,需要知道在配置步骤之后是否可以添加路线。
答案 0 :(得分:5)
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());