在IIS中重写映射使web.config太大

时间:2015-08-06 01:04:36

标签: iis-7 web-config iis-7.5

我正在迁移一个/将在IIS上运行的网站,我将使用重写地图301重定向旧的" .asp"新URL样式的URL。对于成千上万的URL,没有模式,所以看来我必须依赖重写映射。

我的问题是默认的web.config大小限制为250kb,而在我的环境中,我无法更改此权限(可以在注册表级别进行更改 - 如果有人可以访问)。 / p>

我已经研究过将rewriteMaps部分移动到外部文件,但是外部文件的默认大小限制为250kg,所以这也不会起作用。

我正在寻找其他方法来解决这个问题......我现在坐在242kb,并且有超过两倍的旧重定向映射要添加。

提前致谢。

4 个答案:

答案 0 :(得分:1)

由于我处于共享环境中,除了将其移动到单个外部配置文件之外没有其他解决方案,而该文件又被限制为250KB。

所以这就是我所做的:

我用最高流量的重定向填充地图以显示,当然还有任何可以使用模式重定向的网址组(因此它们会最快)。

对于重定向的100k剩余长尾,我将它们放入db中的REDIRECTS表... SO,在请求通过文件中的所有重写规则后(当然,没有命中)任何),它默认请求到某个脚本。脚本所做的第一件事就是检查REDIRECTS表,如果存在一个条目,我在代码中进行重定向......它的速度较慢,但​​表中的大部分内容都是长尾,正如我所说,访问次数最多的重定向仍在文件中。到目前为止,这对我来说效果很好,我可以添加尽可能多的重定向...例如如果页面标题/网址被编辑,我的管理区域会自动添加重定向等

答案 1 :(得分:0)

Nativerd.dll文件使用此注册表项的值来确定Web.config文件的最大允许大小(KB)。配置系统在Windows Server 2008中采用默认值250 KB,在Windows Vista发行版中采用100 KB。

限制250KB的原因是为了减少上传大型web.config文件的攻击。您可以通过更改注册表中的上限值来更改限制:

  HKLM\SOFTWARE\Wow6432Node\Microsoft\InetStp\Configuration\MaxWebConfigFileSizeInKB (REG_DWORD)

请参阅:Description of the registry keys that are used by IIS 7.0, IIS 7.5, and IIS 8.0

另一个选择是将web.config文件拆分为多个较小的文件。

答案 2 :(得分:0)

如Neill所说,您可以将配置拆分为几个不同的文件。

您将拥有一个主web.config文件,您可以在其中通过将configSource属性添加到要拆分为其他文件的部分来引用子配置文件。

例如,如果您想将“appsettings”部分拆分为另一个文件,则可以将web.config文件中的appSettings部分更改为:

<appSettings configSource="appsettings.config" />

并在appsettings.config文件中,您可以添加所有的appsettings条目,例如它们在原始web.config文件中;例如;

 <appSettings>
     <add key="aspnet:RestrictXmlControls" value="true" />
     <add key="FeedCacheTime" value="300" />
     <add key="FeedPageUrl" value="/_layouts/15/feed.aspx?" />
     <add key="FeedXsl1" value="/Style Library/Xsl Style Sheets/Rss.xsl" />
     <add key="aspnet:AllowAnonymousImpersonation" value="true" />
 </appSettings>

显然改为使用重写贴图。

答案 3 :(得分:0)

我们坚持了很长时间,最终编写了自己的301重定向器。在sitecore中,它位于ItemResolver之后修补的管道中,该管道消耗了大文件(未包含在任何Web.configs中)。我们不能使用“ registry hack”选项,因为它是一个Azure Service App,并且没有(简单又便宜)对注册表的访问。