如何从Service Stack插件添加新端点?

时间:2016-04-27 16:03:48

标签: c# servicestack

我是Service Stack的新手,我正在为我们拥有的Service Stack应用程序创建一个插件库。

目前我有这个班级

public class MyPlugin : IPlugin {

    public void Register(IAppHost appHost){

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

    }
}

当我添加断点并遍历它时,它被调用的代码和理想情况下端点正在注册。但是当元数据页面拉起时,端点没有列出,我无法导航到/ myendpoint网址。

这是我提供的服务,但它似乎对Api不可见。

public class MyPluginService : Service {

    public MyPluginResponse Get(MyPluginRequest request){

        ///... implementation details
    }

}

更新

我将此代码添加到注册函数:

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

所以它会出现在MetaData页面上,但是当导航到链接时我仍然会收到错误

  

无法解析服务&#39; MyPluginRequest&#39;

1 个答案:

答案 0 :(得分:3)

Routes.Add API仅用于注册现有服务的自定义路由。如果您想动态注册服务,则需要使用RegisterService<T> API并指定serviceType,例如:

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

AddPluginLink仅添加指向元数据页面的链接:

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