Nginx HTTP处理程序未在Mono MVC 3下正确注册

Nginx HTTP处理程序未在Mono MVC 3下正确注册,nginx,mono,httphandler,fastcgi,Nginx,Mono,Httphandler,Fastcgi,我束手无策。我试图通过FastCGI在Mono下运行ASP.NET MVC 3网站,但盒式磁带的HTTP处理程序无法正确注册。该网站是 奇怪的是: 它在我的本地机器上运行良好 当站点在生产机器上的xsp4下运行时,它工作正常 当站点在生产机器上的fastcgi-mono-server4下运行时,它无法正常工作 我尝试过的事情: 检查Nginx配置,确保它传入了所有正确的FastCGI参数(确实如此) 单声道3.0.7和3.0.10。一个朋友让它在3.0.7下工作,但我没有骰子 这是一个特

我束手无策。我试图通过FastCGI在Mono下运行ASP.NET MVC 3网站,但盒式磁带的HTTP处理程序无法正确注册。该网站是

奇怪的是:

  • 它在我的本地机器上运行良好
  • 当站点在生产机器上的
    xsp4
    下运行时,它工作正常
  • 当站点在生产机器上的
    fastcgi-mono-server4
    下运行时,它无法正常工作
我尝试过的事情:

  • 检查Nginx配置,确保它传入了所有正确的FastCGI参数(确实如此)
  • 单声道3.0.7和3.0.10。一个朋友让它在3.0.7下工作,但我没有骰子
这是一个特定的Web.config条目:

<add path="cassette.axd" verb="*" type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet" />

据我所知,我有两个问题导致了这个问题:

  • MVC的IgnoreRoute与
    CASEX.axd
    URL不匹配,即使它在中明确指定(并且在普通的旧XSP4下工作)。当我为字符串“CASEX.axd”添加显式IgnoreRoute(通过执行
    routes.IgnoreRoute(“CASEX.axd”);
    )时,瞧,它开始传递到处理程序,除了:
  • 服务器的HTTP处理程序路径匹配似乎只在FastCGI下进行精确匹配。即使我关闭了站点中的所有MVC注册,处理程序也只匹配
    caste.axd
    ,即使这样,处理程序似乎没有任何路径信息
  • 当我添加更多的条目时,比如
    ,它通过UNIX套接字调用FastCGI
同样,这个问题不会发生在XSP4下,它只发生在FastCGI下。虽然我可以将其反向代理到XSP4实例,但出于性能原因,我不太愿意这样做

这里还有什么我可能遗漏的吗?

编辑:这里有一些URL应该可以使用。正如您所看到的,他们使用的是StaticFileHandler,而不是盒式HTTP处理程序:

您可以看到,在显式指定IgnoreRoute的情况下,
caste.axd
路径确实映射,但只有该路径:

如果在其末尾加一个斜杠,则不起作用:


编辑2:我已经更新了站点,只需链接到
/Content/main.css
文件,这样在对该问题进行排序时,站点就会正确显示;如果您在浏览器中检查网络请求,您将看到对盒式磁带捆绑包的失败请求。

我在Mono bug tracker上提交了一个bug,希望能够找到发生这种情况的原因:

更新:我已找到问题的原因。在OpenSUSE下,mono和XSP分别打包。尽管我将Mono升级到了3.0.10,XSP/FastCGI仍然保持在2.10.2.0版本。当我将XSP/FastCGI包升级到2.11.0.0时,这个问题消失了