2011-09-07 69 views
1

我建立一个网站使用的NuGet包(我自己编译直接从GitHub)N2上失败。构成/ N2文件夹中管理界面的文件全部编译到N2.zip中,并且有一个虚拟路径提供程序被配置为从zip文件中提供/ N2文件夹中的任何内容。N2CMS虚拟路径提供Web服务器

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

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

我打开ASP.Net在web.config中跟踪,并从我可以看到,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中,但我不确定。

+0

这里讨论的这个问题http://n2cms.codeplex.com/discussions/271807 –

+2

是的。由我。 :-) –

回答

0

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

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