2016-04-27 23 views
2

我是服务堆栈的新手,并且正在为我们的服务堆栈应用程序创建一个插件库。如何从Service Stack插件添加新的端点?

目前我有这个类

public class MyPlugin : IPlugin { 

    public void Register(IAppHost appHost){ 

     appHost.Routes.Add<MyPluginRequest>("/myendpoint", ApplyTo.Get); 

    } 
} 

当我添加一个断点,并通过它走,它获取调用的代码和理想的终点被注册。但是,当元数据页面拉起时,端点未列出,我无法导航到/ myendpoint url。

这是我拥有的服务,但它似乎无法看到Api。

public class MyPluginService : Service { 

    public MyPluginResponse Get(MyPluginRequest request){ 

     ///... implementation details 
    } 

} 

UPDATE

我将此代码添加到寄存器功能:

appHost.GetPlugin<MetadataFeature>().AddPluginLink("myendpoint/", "endpoint custom"); 

所以它会出现在元数据页,但导航到该链接时,我仍然得到的错误

无法解析服务'MyPluginRequest'

回答

3

Routes.Add API仅用于注册现有服务的自定义路由。如果你想动态注册一个服务,你需要使用RegisterService<T> API来代替,并指定serviceType,e.g:

public class MyPlugin : IPlugin 
{ 
    public void Register(IAppHost appHost) 
    { 
     appHost.RegisterService<MyPluginService>("/myendpoint"); 
    } 
} 

AddPluginLink只添加链接到元数据页:

appHost.GetPlugin<MetadataFeature>() 
    .AddPluginLink("/myendpoint", "My Custom Endpoint"); 
相关问题