Asp.net .net/iis6 web.config中url映射对无扩展url重写的限制

Asp.net .net/iis6 web.config中url映射对无扩展url重写的限制,asp.net,iis-6,Asp.net,Iis 6,我正在研究iis6/NET2.0站点的简单url重写设置 我加了一个。IIS中指向.net可执行文件的通配符映射。我还在web.config中使用urlMappings元素添加一些重写的URL。我已将配置移到web.config之外,以便在不强制应用程序重新启动的情况下对列表进行更改,如下所示: <urlMappings configSource="config\urlMappings.config"> </urlMappings> 我想允许我们的内容管理向

我正在研究iis6/NET2.0站点的简单url重写设置

我加了一个。IIS中指向.net可执行文件的通配符映射。我还在web.config中使用urlMappings元素添加一些重写的URL。我已将配置移到web.config之外,以便在不强制应用程序重新启动的情况下对列表进行更改,如下所示:

  <urlMappings configSource="config\urlMappings.config">
  </urlMappings>

我想允许我们的内容管理向这个文件添加URL,这样我们就可以有无扩展友好的URL

<add url="~/someurl" mappedUrl="index.aspx?page=123" />

这很好,但我担心在urlMappings配置中可以映射的条目数量的限制。我似乎找不到关于这个的任何文件。有人发现了什么限制吗

谢谢。

看看房间里面 我看到 你指望什么 来自虚拟世界的东西没有限制

URL的数量。 我认为虚拟机对您可以加载的数量没有限制

加载时间 加载延迟仅在web上,然后保持为静态值,并且仅在您更改web.config或重新启动应用程序时重新加载

记忆 您有一个静态集合,其中包含在每个请求开始时调用的所有数据。取决于要在web.config上加载的数据量

搜索时间 根据我的研究,的搜索时间不是使用任何散列方法来完成的,但是他们将字符串一个接一个地进行比较,所以这里可能有一个小问题

这是对每个url进行大量搜索的代码

internal string HttpResolveMapping(string path)
{
    string mappedUrl = null;
    string str2 = UrlPath.MakeVirtualPathAppRelative(path);
    UrlMapping mapping = this.UrlMappings[str2];
    if (mapping != null)
    {
        mappedUrl = mapping.MappedUrl;
    }
    return mappedUrl;
}
这里的UrlMapping=this.UrlMappings[str2]正在呼叫

protected internal ConfigurationElement BaseGet(object key)
{
    foreach (Entry entry in this._items)
    {
        if ((entry._entryType != EntryType.Removed) && this.CompareKeys(key, entry.GetKey(this)))
        {
            return entry._value;
        }
    }
    return null;
}
我需要进一步检查一下,但我认为在搜索url映射时存在一个问题

在现实生活中 最近我优化了类似的数据库调用代码。在一个类似的循环中,我将速度从500毫秒降低到150毫秒到200毫秒,这在几秒钟内被称为20.000-50.000次

在您的情况下,我不认为此路由在一次页面调用中调用超过100-200次。(我说100是因为您将所有调用重定向到asp.net,甚至是图像)

因此,我认为这实际上取决于你赢得网站的速度,但是你的用户我不认为他们注意到了不同的速度,在这一点上你只会快10-20-30毫秒-我们只会在你有大量URL(可能超过1500个URL)的情况下发言

同时调用包含内容的第一个页面,然后从这个循环中搜索,返回页面,然后图像随之出现,因此用户只会在页面的前1-5个调用延迟上看到不同,并且不理解图像上的小延迟

这里的优化只会在程序上进行测量,而不会被用户理解

这里的时间是根据我在电脑上(速度较慢)的经验而来的,只是给人我的经验的感觉

再多说几句 我认为urlMapping是一个现成的解决方案,可以帮助任何人开始,但如果一些人有时间,知识和资源是值得的,以修复自己的url映射,使它在他的需要和超快速,如果他喜欢。对于start来说,有urlMapping是很好的,但是如果您需要一些更高级的想法,那么您可以在以后的项目更大时更新它

我是速度的粉丝,在电脑上等待的每一秒都是我们生命中的一秒。
然而,如果你很容易使用urlMapping,那就去做吧,让网站运行起来,几个月后再检查一遍。

是的,这个集合可能可以容纳无限多的项目,但我很好奇在实际层面上是否会有一个(专业)演出issue@ScottE我已经输入了更多的信息。谢谢你如此全面地挖掘,亚里士多德。您是否有在大量URL中使用URL映射的经验?比如说,在500-1000范围内?@ScottE是的,我不仅对url有很多经验,而且对许多类似的循环也有很多经验。速度上的不同是很难注意到的,只有在我优化了太多的代码之后,我才能看到不同。不仅有一点需要快速,几乎所有的点都必须非常快。另外,我在许多方面都使用小型缓存例程来加速思考。@ScottE我不知道您的程序,也不知道在用户看到某些内容之前,您将调用500-1000循环多少次,但我认为至少在一开始,您对这部分没有问题。