覆盖 NancyFX / Visual Studio Web 服务器中的 OPTIONS 响应

Posted

技术标签:

【中文标题】覆盖 NancyFX / Visual Studio Web 服务器中的 OPTIONS 响应【英文标题】:Override OPTIONS response in NancyFX / Visual Studio Web Server 【发布时间】:2013-07-18 21:21:07 【问题描述】:

我已经使用 NancyFX 构建了一个 RESTful Web 服务,我现在正尝试从一个单独的域发布到该服务。当然,当我这样做时,我会在控制台中看到一条失败的 OPTIONS 消息,因为这是一个跨站点 POST,我需要确保 Nancy 正确响应浏览器发送的 OPTIONS 消息。但是,当我在 Nancy 模块中定义路由时:

this.Options["/options/"] = _ => this.OptionsRequest();

private dynamic OptionsRequest()

         return this.Response.AsJson(Request)
               .WithHeader("Access-Control-Allow-Origin", "*")
               .WithHeader("Access-Control-Allow-Methods", "POST")
               .WithHeader("Access-Control-Allow-Headers", "Accept, Origin, Content-type");

代码永远不会被命中。我可以在调试器中的 OptionsRequest() 方法上设置断点,然后查看代码永远不会被命中。但是我可以在邮递员中发出一个 OPTIONS 请求,然后服务器返回一个响应(有趣的是,它似乎返回了来自所有 URI 的响应,而不仅仅是我定义的 /options/ 路由)。

我是否必须覆盖默认的 Nancy OPTIONS 行为才能为 OPTIONS 指定路由,或者这与 Visual Studio Development Web Server (Casini) 中托管的服务有关?我已经尝试了所有我能想到的方法,但我仍然很难理解为什么我不能为这个特定的动词定义行为。

【问题讨论】:

【参考方案1】:

原来这是 Nancy v0.17.1 中的一个错误(请参阅 https://github.com/NancyFx/Nancy/pull/1093)。升级到 0.18.0 解决了这个问题并让我的 OPTIONS 路由正常工作。

【讨论】:

以上是关于覆盖 NancyFX / Visual Studio Web 服务器中的 OPTIONS 响应的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2010问题修复

Nancyfx跨平台开发总结简介

是否可以使用 NancyFX 启用 CORS?

NancyFx+SignalR 自托管和 Windows 服务

visual-studio-code 中的自动右括号不适用于 js 和 jsx 文件

使用 Fluent Validation 配置 NancyFx