2010-06-15 56 views
2

我在我的一个网站上有这个错误。搜索认为所有的项目都没有找到某种类型的字典。阅读它可能是由IIS 7上的Url Rewrite模块引起的,这是我用于某些重定向的地方。“给定的密钥不在字典中”IIS7上的ASP.NET错误

错误出现在所有网页以为网站,99%的把握只能在使用URL重写

页这是错误的堆栈

在System.ThrowHelper.ThrowKeyNotFoundException()在System.Collections.Generic。 Dictionary.2.get_Item(TKey key)at System.Web.UI.WebControls.ListViewPagedDataSource.EnumeratorOnIList.get_Current()System.Web.UI上System.Data.DataView.System.Collections.IList.get_Item(Int32 recordIndex)。 WebControls.ListView.CreateItemsWithoutGroups(ListViewPagedDataSource dataSource,Boolean dataBinding,InsertItemPosition insertPosition,ArrayList keyArray)在System.Web.UI.WebControls.ListView.CreateChildControls(IEnumerable da在System.Web.UI.WebControls.ListView.PerformDataBinding(IEnumerable数据)在System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable数据)在System.Web.UI.WebControls.DataBoundControl.PerformSelect( )在System.Web.UI.WebControls.ListView.PerformSelect()在System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()在System.Web.UI.WebControls.ListView.CreateChildControls()在System.Web.UI。在System.Web.UI.Control.PreRenderRecursiveInternal()System.Web.UI.Control.PreRenderRecursiveInternal()System.Web.UI.Control.PreRenderRecursiveInternal()System.Web.UI.Control上Control.EnsureChildControls()。 System.Web.UI.Page.ProcessRequestMain中的System.Web.UI.Control.PreRenderRecursiveInternal()上的PreRenderRecursiveInternal()(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)HTTP_CONNECTION:Keep-Alive HTTP_ACCEPT:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash ,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,application/x-icq,/ HTTP_ACCEPT_LANGUAGE:en HTTP_COOKIE:__ utma = 248870149.1673016949.1252234176.1276449788.1276595165.49; __utmz = 248870149.1276595165.49.55.utmcsr =搜索| utmccn =(有机)| utmcmd =有机| utmctr = *****; wooTracker = C1T8MWMAZWQVHJXWROHB25SO4S0B7UO0; __utmb = 248870149.6.10.1276595165; __utmc = 248870149; wooTracker = C1T8MWMAZWQVHJXWROHB25SO4S0B7UO0;机器ID = 87.69.44.154%3A1253914747956; wooMeta = ODAwMzkmMSYxJjc1MDE5JjEyNTUyMTQwODEwMjkmMTI1NTIxNDE1NjA0OCYmMTAwJiYzMDAyODQmJiYm; _csoot = 1267959625296; _csuid = X4c1ef311c39a67; ASP.NET_SessionId = zzdn5b45uqyhw145ptqhxe20 HTTP_HOST:************ HTTP_REFERER:************* HTTP_USER_AGENT:Mozilla/4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1 ; GTB6)HTTP_X_CEPT_ENCODING:gzip,deflate *************

是否有人熟悉修复或至少在哪里寻找?

+0

你知道哪个页面导致了这个错误吗?如果是这样,你能显示该页面中的列表视图的标记及其关联的数据源吗? – 2010-06-27 03:43:35

回答

3

堆栈跟踪指向数据绑定期间发生的错误。难道至少在一种情况下,您将UI中的列表绑定到不包含引用列名的对象列表,数据表或其他列表中?

+0

我该如何检查? – eugeneK 2010-06-22 06:58:31

+0

我知道的唯一方法就是在数据绑定的情况下检查你的代码。堆栈跟踪说这是一个ListView控件是罪魁祸首。我将开始使用可能会显示列的动态列表的列表视图控件,因为这将是零星问题的最高可能性。祝你好运! – Tahbaza 2010-06-22 17:56:23

2

尝试添加该到你的web.config配置部分:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
</system.webServer> 

在已重写URL,通常不是所有的管理模块都执行页(无认证等)。如果被访问的字典会被这样一个模块填充(比如HttpContext.Current.User,它也是这样设置的,并且在没有该设置的情况下将为null),那么这将修复它。

+0

谢谢。我已添加该行,但仍具有相同的错误 – eugeneK 2010-06-15 10:30:37

+0

Hrm。那么恐怕没有其他方法可以调试到发生错误的位置,并找出哪些字典丢失了哪个键,并尝试从未重写的请求中设置值的位置进行重现。然后,您可以尝试找出为什么该条目不是在重写的请求中创建的。 – 2010-06-15 12:05:37

+0

点是我无法重现此错误。有些用户拥有它,我在错误报告页面中看到大量这些错误。 – eugeneK 2010-06-15 14:15:10

1

很难说没有更多的信息,但我会说你有一个listview数据绑定到一个正在做一个SQL查询的数据源,绑定包括按名称选择特定的列,并且该列不在结果中(列重命名,列不在查询中,拼写错误等)。

listview的标记,其绑定的数据源以及数据源的代码隐藏真的是我们需要在这里提供帮助的。

相关问题