我还没有看到任何专门针对这一特定问题的问题。
当使用 URL 路由时,请求进入 IIS,然后路由到 Aspx 页面。例如,网站:www.site.com/products 可能会将请求路由到 wwwroot/inetpub/mysite/pages/productsPage.aspx
需要注意的是,该页面是 ROUTED,而不是 ReDirected。
请注意,为了使 URL 在 IIS 6 中正常工作,通配符扩展必须设置将所有资源路由到 Asp.Net(然后 Asp.Net 将把静态资源交还)这在此处记录: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
看起来 IIS 在发回内容时不会对其进行 GZip。我已按照此处的说明进行操作: http://www.kavinda.net/2007/02/17/how-to-enable-http-compression-iis6.html
启用 IIS 6 压缩。
知道为什么 Http Compression 似乎不起作用吗?它似乎在我的服务器上的其他网站上运行良好。只有 URL Routing 不起作用
答案1
使用类似方法让你的 ASP.NET 应用程序使用 gzip 压缩其输出本身这个。
答案2
最好的办法是使用Http压缩作者:Bel Lowery。这是一个简单、免费且开源的 HttpModule,用于处理页面的 HTTP 压缩。您可以将其与 IIS Http Compression 选项结合使用。
我将 HttpCompress 与 Vici MVC 结合使用,效果非常顺畅!
我已经在网上搜索了几个小时,要么使用 HttpCompress,要么购买商业项目(Port80 软件有一个解决方案),要么编写我自己的 HttpModule。
PS:IIS 根据文件扩展名进行 HTTP 压缩。这就是它不适用于使用 URL 路由的网站的原因。
答案3
你尝试过这个方法吗? MS KB322603
要使 IIS 5.0 能够压缩 .aspx 页,请按照下列步骤操作:
- 打开命令提示符。
- 键入 net stop iisadmin,然后按 ENTER。
- 键入 cd C:\InetPub\adminscripts,然后按 ENTER。
- 键入以下内容,然后按 ENTER:CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/GZIP/HcScriptFileExtensions“asp”“dll”“exe”“aspx”
- 键入以下内容,然后按 ENTER:CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/Filters/Compression/DEFLATE/HcScriptFileExtensions“asp”“dll”“exe”“aspx”
- 键入 net start w3svc,然后按 ENTER。
答案4
很抱歉讨论得这么晚,但由于我(仍然)必须在 MVC 网站上启用 IIS 6 压缩,因此我找到了一个 IIS 6 本机解决方案:包含在压缩扩展中axd
。这假设您已正确启用 .Net Framework 4 中对 IIS 6 扩展较少 URL 的支持。
我已经直接在 IIS Metabase 中完成了此操作。(如前所述)这里;%windir%\systems32\inetsrv\metabase.xml
。编辑前请先停止IIS或在IIS中启用“metabase热编辑”,然后进行备份。)
从我的配置中提取:
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="0"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="9"
HcFileExtensions="htm
html
txt
xml
css
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
cgi
aspx
asmx
ashx
axd"
>
</IIsCompressionScheme>
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcDynamicCompressionLevel="9"
HcFileExtensions="htm
html
txt
xml
css
js"
HcOnDemandCompLevel="10"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
cgi
aspx
asmx
ashx
axd"
>
</IIsCompressionScheme>
<IIsCompressionSchemes Location ="/LM/W3SVC/Filters/Compression/Parameters"
HcCacheControlHeader="max-age=86400"
HcCompressionBufferSize="8192"
HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
HcDoDiskSpaceLimiting="TRUE"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="TRUE"
HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
HcFilesDeletedPerDiskFree="256"
HcIoBufferSize="8192"
HcMaxDiskSpaceUsage="99614720"
HcMaxQueueLength="1000"
HcMinFileSizeForComp="1"
HcNoCompressionForHttp10="FALSE"
HcNoCompressionForProxies="FALSE"
HcNoCompressionForRange="FALSE"
HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>
合理性:在 IIS 6 中,无扩展 URL 可以通过调用页面来实现eurl.axd
。请参阅此内容博客以获得有关使用 fx4 的 IIS6 中无扩展 URL 的更深入解释。