Как развернуть маршруты при развертывании приложения ASP.MVC 3 в подпапке (не в корневом каталоге)? - PullRequest
1 голос
/ 10 июня 2011

Я разрабатываю проект ASP.MVC 3 на моем локальном компьютере, где он находится в корне локального веб-сервера.

localhost:12345/(project is here)

Однако при развертывании на нашем общедоступном веб-сервере это приложение будет находиться в подпапке

www.mycompany.com/myapp/(project goes here)

Как мне справиться с этим несоответствием? На ум приходит несколько вопросов:

  1. Нужно ли настраивать маршруты MVC? Или они просто что-нибудь запечатлят после / myapp /?

  2. Использую ли я HomeController, когда я действительно не хочу, чтобы «Дом» появлялся на маршруте? то есть / myapp / home / (action) / (id) - скорее я хочу это: / myapp / (action) / (id), если Home является контроллером.

  3. Должен ли я соответствовать этой структуре папок на моем локальном компьютере? (Этот проект никогда не будет иметь доступа ни к чему, кроме папки myapp)

  4. Если 3 - да, то как?

Я использую VS 2010 с IIS Express локально.

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

По нашему опыту я обнаружил, что в контроллерах нет проблем с маршрутами.

Однако, если вы используете в своих представлениях помощники HTML, такие как Html.BeginForm или Html.Action, они не работают с перегруженными методами, которые получают контроллер, аргументы действия. Вы должны поместить весь URL в помощники HTML, используя Url.Content,

Это не работает:

Html.BeginForm()

или

Html.BeginForm("ResetPassword", "Account")

Но это работает:

Html.BeginForm(Url.Content("~/Account/ResetPassword");
2 голосов
/ 10 июня 2011
  1. Маршруты относятся к веб-приложению. Это означает, что вам не нужно иметь / myapp / в ваших маршрутах.
  2. Нет, вам не нужно, чтобы Дом появлялся на маршруте. Лично для практики я вывожу маршрут по умолчанию.
  3. Нет, вам не нужно соответствовать этой структуре папок.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...