2009-02-16 3 views
1

У меня есть набор веб-сайтов, построенных в MVC - каждый, по сути, является клоном одного исходного сайта). На одном из сайтов я получаю сообщение об ошибке из заголовка этого сообщения («данный ключ отсутствует в словаре») - это происходит только на одной странице. Код идентичен всем сайтам, включая тот, который действует. Каждый из сайтов устанавливается с одинаковой настройкой (большинство из них параллельны друг другу на одном сервере). Я не могу реплицировать это в своей среде Dev, поэтому не знаю, как отлаживать (наши сайты скомпилированы с помощью процесса сборки Nant и все настроены на режим Release, поэтому нет информации об отладочной информации).ASP.Net MVC: «Указанный ключ отсутствовал в словаре»

Когда я просматриваю трассировку стека ошибки, я замечаю, что ни в коем случае наш код не вызывается - это все вызовы на основе ASP.Net-страниц (в частности, последняя значимая функция - это метод, называемый «__RenderSearchContent» в Скомпилированная страница. Насколько я могу судить по тому, что я могу прогнать соответствующее действие контроллера, нет экземпляров, в которых код использует объект Dictionary.

Мне кажется, что я что-то пропустил, но не уверен где искать - код, похоже, не проблема, там не должно быть быть любым различием окружающей среды (хотя это не невозможно - база данных, например, является другой установкой, но имеет идентичную схему и еще не используется к трассировке стека).

Одна из областей, в которых я подозреваю, это маршрутизация, которую я знаю, использует словарь - но, конечно, если бы это было так, другие сайты пострадали бы от одной и той же проблемы?

Есть ли какие-либо предложения относительно того, где я могу найти причину этой проблемы?

Любая помощь будет очень признательна.

Приветствие

ответ

2

Итак, проблема была не там, где я ожидал. Если бы у меня был доллар за каждый раз , то произошел ...

В основном проблема была обнаружена в поле зрения, которое выдавало ошибку. Был элемент данных, который присутствовал на других веб-сайтах, но не этот. Я предполагаю, что проблема такого типа в том, что сильно типизированные объекты идеальны.

1

Проверьте запрос (или форма) параметры для запроса, который вызывает проблему, содержат ли параметр (или параметры), соответствующие имена аргументов Действия контроллера. Когда действие вызывается, оно должно искать в параметрах запроса для именованных параметров, соответствующих именам аргументов действия.

+0

Привет, спасибо за ответ. Было хорошим предложением проверить параметры маршрута, но в данном случае это не решение. Я описываю решение в ответе, который я предоставил. –

Смежные вопросы