Nancy和WebAPI在OWIN中的自主机冲突路由

本文关键字:主机 冲突 路由 WebAPI OWIN Nancy | 更新日期: 2023-09-27 18:28:46

我第一次使用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模块,目的是提供有角度的内容:

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

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

Nancy和WebAPI在OWIN中的自主机冲突路由

是否测试了PerformPassThrough或PassThroughWhenStatusCodesAre in UseNancy()方法?

它被记录在与owin托管nancy的条件传递部分中。(https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-owin#conditional-通过)