Фабрика контроллера StructureMap и пустой экземпляр контроллера в MVC

Потому что это быстрее

Они, конечно, могли бы поддерживать добавление, но гораздо быстрее предварять, что они ограничивают API. Кроме того, добавление не работает, так как вы должны затем изменить последний элемент или создать новый список. Prepend работает в неизменном, функциональном стиле по своей природе.

10
задан Chris Sutton 21 June 2010 в 13:21
поделиться

3 ответа

Я столкнулся с той же проблемой с фабрикой контроллеров, построенной на основе ninject.

Кажется, MVC передаст вам null для типа контроллера, когда он не может разрешить маршрут из таблицы маршрутизации или когда маршрут указывает ни один из существующих контроллеров. Я сделал две вещи, чтобы решить эту проблему. Вы можете проверить свою таблицу маршрутов и добавить общий маршрут, который показывает страницу с ошибкой 404, как описано здесь .Net MVC Routing Catchall не работает

Вы также можете проверить с помощью отладчика маршрутизации, что идет не так. http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

5
ответ дан 3 December 2019 в 23:14
поделиться

У меня была аналогичная проблема. Я считаю, что это были HTTP-запросы для несуществующих изображений, файлов CSS и т. Д.

Мы знаем, что маршрутизация MVC сначала проверяет, существует ли запрошенный файл физически. В противном случае URL-адрес проверяется на соответствие настроенным маршрутам. Я думаю, что запрос на изображение, которое не было t Physical exist был передан механизму маршрутизации и не соответствовал никаким маршрутам, поэтому использовалось NULL.

Итак, чтобы исправить это, используйте FireBug или что-то, что нужно отслеживать и исправлять, сломанный HTTP Запросы. Во время разработки я использовал такой путь, чтобы временно обойти эти проблемы (все мои папки ресурсов начинаются с подчеркивания, например _Images, _Styles и т. Д.):

routes.IgnoreRoute("_*");  // TODO: Remove before launch

Надеюсь, это поможет!

1
ответ дан 3 December 2019 в 23:14
поделиться

Most browser are looking for a favicon.ico when you load a site, and there is probably some caching involved with this behavior, this might explain the odd "Only fail on the first build" thing you mentionned.

In my case this was causing the problem of the null controller type in the controller factory.

Adding a routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); in global.asax makes the error go away, the request should fall through to the filesystem without MVC looking for a favico.ico controller in your code.

Here is a link to Gunnar Peipman post about this

I found out by overriding GetControllerType(string controllerName) in my custom controller factory class and checking what the controllerName value was for each request.

8
ответ дан 3 December 2019 в 23:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: