ASP.Net MVC: «Указанный ключ отсутствует в словаре» - PullRequest
1 голос
/ 16 февраля 2009

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

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

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

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

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

Любая помощь будет высоко ценится.

Приветствия

Ответы [ 2 ]

2 голосов
/ 17 февраля 2009

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

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

1 голос
/ 16 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...