N2CMS虚拟路径提供程序在Web服务器上失败

时间:2011-09-07 00:45:48

标签: n2cms

我正在使用NuGet包构建一个使用N2的网站(我正在直接从GitHub编译)。构成/ N2文件夹中管理接口的文件都编译成N2.zip,并且有一个虚拟路径提供程序,配置为从zip文件中提供/ N2文件夹中的任何内容。

在我的开发机器上,它完美运行。当我将其部署到Web服务器(运行IIS 6或IIS 7.5)时,/ N2文件夹中的文件请求返回404.有一个奇怪的例外:提供了具有查询字符串值的请求。例如,/N2/Login.aspx?ReturnUrl=%2fn2有效,但/N2/Resources/Css/All.css没有。 (我正在使用Fiddler 2来监控请求。)

这是一个MVC站点,在.Net 4.0下运行,而不是预编译。

我在web.config中启用了ASP.Net跟踪,从中我可以看到VPP正在执行,因为它写入以ZipVPP:开头的跟踪行

ZipVPP: False ~/default.cshtml      
ZipVPP: False ~/default.vbhtml  4.79004203405183E-05    0.000048
ZipVPP: False ~/index.cshtml    9.07992130999052E-05    0.000043
ZipVPP: False ~/index.vbhtml    0.000125475536747951    0.000035
ZipVPP: False /Views/Home/Index.aspx    0.000476485344693378    0.000351
ZipVPP: False /Views/Home/Index.ascx    0.000554325119945653    0.000078
ZipVPP: False /Views/Shared/Index.aspx  0.000631632393110378    0.000077
ZipVPP: False /Views/Shared/Index.ascx  0.000704500969472239    0.000073
ZipVPP: False ~/Views/Home/_ViewStart.cshtml    0.000794229163423298    0.000090
ZipVPP: False ~/Views/Home/_ViewStart.vbhtml    0.000833389826910285    0.000039
ZipVPP: True ~/Views/_ViewStart.cshtml  0.000872745800133037    0.000039
ZipVPP: False ~/_ViewStart.cshtml   0.000935947959862434    0.000063
ZipVPP: False ~/_ViewStart.vbhtml   0.000972131211344948    0.000036
ZipVPP: True ~/Views/Shared/_Layout.cshtml  0.00102791407786914 0.000056
ZipVPP: False /Views/Home/LayoutPartials/Rotator.aspx   0.00113080303437734 0.000103

这表明它可能是VPP中的一个错误,但我不确定。

1 个答案:

答案 0 :(得分:0)

修复是为通配符路由配置IIS 6,以便所有请求(包括图像,css,脚本等)都通过ASP.Net。这为虚拟路径提供者提供了机会。如果没有通配符路由,IIS将查看文件扩展名,对于典型的静态文件类型,如.jpg.css,只需查找文件系统中的文件即可。由于文件不存在,因此返回404。

要进行配置,请参阅N2CMS virtual path provider fails on web server。调整aspnet_isapi.dll的路径以对应您需要的.Net版本,并取消选中“检查该文件是否存在。”