我已经使用 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) 中托管的服务有关?我已经尝试了所有我能想到的东西,但我仍然很难理解为什么我不能为这个特定的动词定义行为。