我第一次与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 Module,旨在满足角度的需求:

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


取消注释“启动”中的appBuilder.UseNancy()行并运行服务器非常适合获得主视图。但是,现在,当我尝试访问API端点之一时,Nancy似乎正在处理请求并返回404页面而不是API结果。有没有一种方法可以使Nancy和Web API很好地配合使用,以使它们的路由不会像这样发生冲突?

最佳答案

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

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

关于c# - OWIN自宿主路由中的Nancy和Web API冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34549580/

10-13 04:38