Visual Studio 2010 // .NET MVC Application - ошибка 404 в пустом проекте - PullRequest
0 голосов
/ 15 декабря 2011

Я создал пустой проект MVC в vs2010 и создал представление (MessageView), контроллер и модель.По какой-то причине, когда я создаю свое приложение (установив мой вид в качестве стартовой страницы), оно выдает ошибку 404 и добавляет к URL следующее:

http://localhost/MvcApplication1/**Account/LogOn?ReturnUrl=%2fMvcApplication1%2fViews%2fMessageView.aspx**

Исследовав мой файл web.configЯ вижу следующий фрагмент кода:

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Это было добавлено автоматически .... Не совсем уверен, почему, учитывая, что я нажал пустой проект MVC.Кто-нибудь знает самый чистый способ исправить это ....

РЕДАКТИРОВАТЬ

РЕШЕНО: Проблема в том, что я переместил MessageView в подкаталог Views, помещенный там.Мне пришлось поместить представление в корень каталога проекта, чтобы он мог найти и отобразить его.Мне также пришлось удалить приведенный выше код из файла web.config.

Как заставить это работать, когда он помещен в подкаталог

Ответы [ 4 ]

1 голос
/ 15 декабря 2011

Вы не хотите получать доступ к представлению, вы хотите получить доступ к контроллеру. Это не ошибка, это то, как работает MVC. Ваш URL должен быть:

http://localhost/MvcApplication1/ControllerName

Не

http://localhost/MvcApplication1/Views/MessageView.aspx

Обновление

Вот что происходит. Вы начали с пустого проекта. Это означает, что у вас нет контроллера учетной записи.

MVC не позволяет веб-серверу открывать ваши необработанные файлы представления в / Views (/Views/Whwhat.aspx). Когда вы пытаетесь получить к нему доступ, он возвращает запрещенный заголовок 403.

ASP.NET обрабатывает 403 путем перенаправления в / Account / LogOn - метод действия LogOn AccountController. Так как у вас есть пустой проект, и нет AccountController, это то, что вызывает ваш 404.

Другое обновление

Просто прочитайте свое РЕШЕНО. Опять же, вы не можете получить доступ к файлам в папках Views, Controllers или Models. Это специальные папки, используемые MVC.

Если вы хотите получить доступ к представлению в подкаталоге, создайте подкаталог, например / content или / scripts. MVC рассматривает их как обычные папки, и вы можете получить из них все, что захотите. Таким образом, вы можете поместить файл в папку, например так:

/ SubdirectoryAbc / MessageView.aspx.

После этого вы сможете получить доступ к этому файлу, используя URL http://localhost/MvcApplication1/SubdirectoryAbc/MessageView.aspx.

Однако вы не сможете использовать представление в методе действия контроллера.

1 голос
/ 15 декабря 2011

Просто измените значение Начального действия в свойствах вашего проекта на вкладке web со значения по умолчанию Текущая страница на другое значение.

0 голосов
/ 15 декабря 2011

Проблема в том, что MVC использует соглашение для структуры файла из-за его маршрутизации.Если вы хотите переместить представления в другую папку, вам необходимо настроить код маршрутизации, чтобы он соответствовал структуре вашей папки.Хотя, честно говоря, я не думаю, что это стоит вашего времени.

0 голосов
/ 15 декабря 2011

Вы можете просто удалить весь этот раздел;

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

Это отключит аутентификацию, которая была установлена ​​на сайте по умолчанию с помощью MVC.

...