ASP.NET MVC - Постройте маршруты без контекста Http/Request

Я хотел бы иметь возможность генерировать URL от RouteCollection, не имея доступа к HttpContext. Рассмотрение путем RouteCollection реализован, все методы требуют доступа к RequestContext для получения виртуального тракта.

Я работал вокруг этого путем насмешки HttpContext, но это добавляет неловкую зависимость от RhinoMocks и не является разумным решением. У меня есть другие опции для генерации URL за пределами контекста?

9
задан bromanko 18 December 2009 в 12:30
поделиться

2 ответа

Извините, но привыкните к насмешкам в среде MVC. Как только вы приступите к тестированию, оно вам понадобится. Там так много всего: HttpContext, Session, Server - все, что попадает в ваш контроллер. Если вы хотите сгенерировать путь, вам нужно либо поговорить с HttpContext (в MVC, на самом деле это HttpContextBase, так что вы можете написать свою собственную конкретную реализацию, я думаю), либо вам нужно издеваться над ним.

1
ответ дан 3 November 2019 в 07:48
поделиться

Действительно, большой вопрос. Маршрутизация сама по себе имеет некоторые зависимости от вызова из запущенного приложения ASP.NET, такие как получение URL root приложения, а также любых форм без куки и сессионных куки, которые также идут в URL. Хотя создание поддельных объектов является теоретическим решением, оно, конечно, не рекомендуется для использования во время выполнения.

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

3
ответ дан 3 November 2019 в 07:48
поделиться
Другие вопросы по тегам:

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