使用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)
答案 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)为我排序。