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