我不知道该怎么做。 我试图通过FastCGI在Mono下运行ASP.NET MVC 3网站,而Cassette的HTTP处理程序将无法正确注册。 该网站是http://www.tychaia.com/ 。
奇怪的是:
xsp4
下运行时,它工作正常。 fastcgi-mono-server4
下运行时,它不能正常工作。 我已经尝试过的事情:
这是特定的Web.config项:
<add path="cassette.axd" verb="*" type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet" />
( https://github.com/hach-que/Tychaia/blob/master/Tychaia.Website/Web.config#L47 )
据我所知,我有两个问题导致这个问题:
cassette.axd
URL,即使它在https://github.com/hach-que/Tychaia/blob/master/Tychaia.Website/Global.asax.cs#L20 (和它明确指定在简单的旧XSP4下工作)。 当我为string“cassette.axd”添加一个明确的IgnoreRoute(通过执行routes.IgnoreRoute("cassette.axd");
),它开始传递给处理程序,除了: cassette.axd
,即使如此,处理程序似乎没有任何path信息。 <add path="cassette.axd/*" verb="*" type="Cassette.Aspnet.CassetteHttpHandler, Cassette.Aspnet" />
这些也开始被处理程序处理,通常应该在这个url上做出回应; 你只需要获取默认值,就好像没有附加的URL参数(也许它们被HTTP处理程序path匹配所使用)。 FastCGI目前的设置方式是:
同样,这个问题在XSP4下不会发生, 它只发生在FastCGI下。 虽然我可以将代理转换为XSP4实例,但由于性能方面的原因,我仍然犹豫不决。
还有什么我可以在这里失踪?
编辑:这是一些应该工作的url。 正如你所看到的,他们正在碰到StaticFileHandler而不是Cassette HTTP处理程序:
您可以看到,明确指定了IgnoreRoute后, cassette.axd
path确实会映射,但只有该path:
如果你在它的末尾加上一个斜杠,它也不起作用:
编辑2:我已经更新的网站只是链接到/ /Content/main.css
文件,以便该网站正确显示,而这个问题得到sorting; 如果您在浏览器中检查networking请求,则会看到Cassette包的失败请求。
我已经提交了单声道错误跟踪器的一个错误,希望得到一个答案,为什么会发生这种情况:
https://bugzilla.xamarin.com/show_bug.cgi?id=12190
更新:我找到了问题的原因。 在OpenSUSE下,mono和XSP是分开打包的。 即使我将Mono升级到3.0.10,XSP / FastCGI仍然保持在2.10.2.0版本。 当我将XSP / FastCGI软件包升级到2.11.0.0时,问题消失了。