2016-04-27 21 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"); 
相關問題