我第一次与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很好地一起玩,这样他们的路线不会像这样冲突?
答案 0 :(得分:3)
您是否在UseNancy()方法中测试了PerformPassThrough或PassThroughWhenStatusCodesAre?
使用owin在Hosting nancy的条件传递部分中进行了记录。 (https://github.com/NancyFx/Nancy/wiki/Hosting-nancy-with-owin#conditional-pass-through)