OWIN中的Nancy和WebAPI自己主持冲突的路由

时间:2015-12-31 17:20:19

标签: c# asp.net-web-api owin nancy

我第一次与OWIN合作并尝试进行设置,以便我可以利用Web API和后端服务的属性路由,并且我希望将Nancy用作简单的文件服务器提供我的角度SPA代码。

我的OWIN启动代码:

public class Startup : IOwinAppBuilder
{
    public void Configuration(IAppBuilder appBuilder)
    {
        var config = new HttpConfiguration();

        config.MapHttpAttributeRoutes();
        //FormatterConfig.ConfigureFormatters(config.Formatters);

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
        config.Formatters.JsonFormatter.SerializerSettings =
        new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver()
        };

        //appBuilder.UseNancy();
        appBuilder.UseWebApi(config);
    }
}

我设置了一个测试控制器,其中一些端点为属性路由进行了适当的装饰。此时运行应用程序并尝试命中其中一个端点将返回预期结果。

然后我尝试将Nancy添加到等式中。我添加了一个Nancy模块,意图是它将提供角度内容:

public class HomeModule : NancyModule
{
    public HomeModule()
    {
        Get["/"] = _ => View["home"];
    }
}

取消注释启动中的appBuilder.UseNancy()行并运行服务器非常适合获取主视图。但是,现在当我尝试点击其中一个API端点时,Nancy似乎正在开始处理请求并返回404页面而不是API结果。有没有办法让Nancy和Web API很好地一起玩,这样他们的路线不会像这样冲突?

1 个答案:

答案 0 :(得分:3)

您是否在UseNancy()方法中测试了PerformPassThrough或PassThroughWhenStatusCodesAre?

使用owin在Hosting nancy的条件传递部分中进行了记录。 (https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-owin#conditional-pass-through