为什么RavenDB会劫持我的Nancy请求?

时间:2013-05-30 23:53:32

标签: c# iis ravendb .net-4.5 nancy

从使用相同连接代码的Winforms应用程序,RavenDB工作正常。我可以放弃存储和检索文件。

当我尝试在Nancy应用程序中执行相同操作时,结果完全出乎意料。

Nancy正在侦听端口12345,并且RavenDB正在嵌入式模式下运行,并启用UseEmbeddedHttpServer并在端口8080上侦听。

http://localhost:12345/的第一个请求按要求获取网页响应。对http://localhost:12345/的任何后续请求都会重定向到/raven/studio.html。如果我做的第一个请求是/widgets Nancy按预期返回小部件的JSON列表,但任何后续请求都会返回:

Could not figure out what to do

Your request didn't match anything that Raven knows to do, sorry...

似乎RavenDB正在劫持Nancy正在监听的端口。什么会导致这种行为?

2 个答案:

答案 0 :(得分:7)

当由IIS托管时,需要明确设置RavenDB的端口。

默认值来自IIS配置,这就是从Winforms应用程序运行嵌入式模式时不存在问题的原因。

(db as EmbeddableDocumentStore).Configuration.Port = 8080;

答案 1 :(得分:4)

我没有理由认为它会这样做。

也许你应该指定一个明确的Raven/Port设置。请参阅these docs

或者您可以以编程方式执行此操作:

var store = new EmbeddableDocumentStore {UseEmbeddedHttpServer = true};
store.Configuration.Port = 8080;