Swagger.ObjectModel.Builders.RequiredFieldException:'Paths'是必需的

时间:2017-09-15 09:24:01

标签: asp.net swagger swagger-ui nancy

使用Nancy v 1.4.1和Nancy.Swagger v 2.1.1(支持Nancy v1的最后一个),导航到/ api-docs路径时出现上述错误。有任何想法吗?我见过的设置步骤没有说明“路径”字段。

我的模块:

public class General : NancyModule
{
    public General()
    {


        Get["/","Home"] = parameters =>
        {
            try
            {
                return "home";// View["view/index.html"];
            }
            catch (Exception ex)
            {
                return ExceptionHelper.ExceptionResponse(Negotiate, ex);
            }
        };

        Get["/test/", "Test"] = parameters => {
            return "testie";
        };
    }
}

我的模块元数据:

public class GeneralMetadataModule : MetadataModule<PathItem>
{
    public GeneralMetadataModule(ISwaggerModelCatalog modelCatalog)
    {
        Describe["Test"] = description => description.AsSwagger(
            with => with.Operation(
                op => op.OperationId("Test")
                        .Tag("Users")
                        .Summary("The list of users")
                        .Description("This returns a list of users from our awesome app")));
    }
}

堆栈追踪:

  

Nancy.RequestExecutionException:哦,不! ---&GT; Swagger.ObjectModel.Builders.RequiredFieldException:'Paths'是必需的。      在C:\ projects \ nancy-swagger \ src \ Swagger.ObjectModel \ Builders \ SwaggerRootBuilder.cs中的Swagger.ObjectModel.Builders.SwaggerRootBuilder.Build():第123行      在C:\ projects \ nancy-swagger \ src \ Nancy.Swagger \ Services \ SwaggerMetadataProvider.cs中的Nancy.Swagger.Services.SwaggerMetadataProvider.GetSwaggerJson():第91行      在Nancy.Swagger.Modules.SwaggerModule。&lt;&gt; c__DisplayClass0_0。&lt; .ctor&gt; b__0(对象_)在C:\ projects \ nancy-swagger \ src \ Nancy.Swagger \ Modules \ SwaggerModule.cs:第11行      在CallSite.Target(Closure,CallSite,Func`2,Object)      在Nancy.Routing.Route。&lt;&gt; c__DisplayClass4.b__3(对象参数,CancellationToken上下文)      ---内部异常堆栈跟踪结束---      at Nancy.NancyEngine.InvokeOnErrorHook(NancyContext context,ErrorPipeline pipeline,Exception ex)

2 个答案:

答案 0 :(得分:1)

你的顺序错误 - 名字应该是第一个,然后是路径

Get["Home", "/"] = parameters =>  //this is right
{
    try
    {
        return "home";// View["view/index.html"];
    }
    catch (Exception ex)
    {
        return ExceptionHelper.ExceptionResponse(Negotiate, ex);
    }
};

Get["Test", "/test/"] = parameters => {  //and this is right
    return "testie";
};

答案 1 :(得分:0)

嗯,无论如何,事实证明你需要这样做:

public class General : NancyModule
{
    public General() : base("/v1/general/")//this part
    {
        ...
    {
}

尽管样本nancy.swagger项目实际上并没有实现,但仍然因某种原因而起作用。无论如何,继承base(path)为我排序。