ASP.Net MVC-ресурс не может быть найдена ошибка



Я совершенно новичок ASP.Net MVC. Я только что создал проект MVC3 в Visual Studio 2010. Двигатель представления-бритва. Когда я просто запустил приложение, оно дало правильный результат в браузере. URL-адрес http://localhost:4163/ . Затем я применил "установить в качестве начальной страницы" для индексирования.cshtml внутри папки ~ViewsHome. Затем, когда я запустил приложение url стал http://localhost:4148/Views/Home/Index.cshtml и он сказал, что ресурс не может быть найден. Что мне делать сделать, чтобы исправить это? Где выполняется сопоставление url?



глобальные.файл asax:



using System.Web.Mvc;
using System.Web.Routing;

namespace TEST
{

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
}

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

}

protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();

RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
}
}
745   21  

21 ответов:

сопоставление URL-адресов или "маршрутизация" осуществляется глобальный.асакс в корне вашего ASP.NET сайт MVC.

при нажатии кнопки "Установить в качестве начальной страницы" он изменяет настройки проекта, чтобы искать этот файл относительно корня приложения. Но в MVC the по умолчанию маршрут к Вашей странице индекса на самом деле http://localhost:4163/Home/Index - прочитать что-то вроде этой чтобы получить представление о том, как работает маршрутизация.

чтобы "исправить" ваш проект теперь, когда он пытается (и не удается) перейти к просмотр напрямую, щелкните правой кнопкой мыши проект и выберите"Properties" выберите "Web "tab и выберите"Specific Page", оставив поле пустым. Теперь, когда вы начинаете отлаживать, он должен снова перейти на домашнюю страницу - посмотрите на параметры маршрута по умолчанию, чтобы узнать, почему в методе RegisterRoutes в Global.асакс

убедитесь, что вы создали HomeController.класс cs в папке контроллера.

в аналогичной проблеме, с которой я столкнулся, у моего действия был атрибут HTTP "POST", но я пытался открыть страницу (по умолчанию это "GET").

поэтому мне пришлось создать HTTP-версию" GET".

Я тоже получил ту же ошибку html-404:

ресурс не может быть найден.Описание: HTTP 404. Ресурс вы ищете (или один из его зависимостей) мог быть удален, было изменено его имя или он временно недоступен. Пожалуйста, просмотрите следующий URL-адрес и убедитесь, что он написан правильно.

но после тщательного изучения я обнаружил, что оставил имя контроллера как Default1Controller вместо того чтобы изменять его в HomeController. Когда я внес изменения и отладил приложение, оно работало. Надеюсь, что это поможет вам, если у вас такая же проблема.

выполните следующие действия, чтобы запустить вас asp.net приложение mvc.

  • создание контроллера
    Щелкните правой кнопкой мыши на папке контроллеры и добавить контроллер. Примечание-не удаляйте постфикс контроллера. Его ASP.NET соглашения MVC.
    Дайте имя контроллеру как "DemoController", и вы можете увидеть, что действие" Index "присутствует в"DemoController". "Индекс" - это действие по умолчанию, присутствующее при создании контроллера.

  • Создание Вида
    Право нажав на "индекс" имя действия и сохранить имя представления по умолчанию, т. е. " индекс "и нажмите кнопку" Добавить".

  • Путь Установки
    Открытый Глобальный.asax файл, то вы увидите настройки по умолчанию маршрута сопоставляется с контроллером "Home" и действием" Index "изменяет его на" Demo" контроллер и действие "индекс". Сопоставление URL-адресов записывается в Global.эйсакс файл. При открытии глобальной.asax файл, то вы увидите ниже настройки:

    routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    

    изменить его в:

    routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    

и запустить приложение вы можете увидеть ваше приложение в работе.

Ну вы не можете установить страницу по умолчанию в asp.net mvc.
Перейти к глобальному.асакс.CS и определение маршрута. Маршрут по умолчанию указывает на метод индексирования HomeController.
Я лучше посмотрю несколько короткометражных фильмов о asp.net mvc или попытаться найти ботаник ужин уроке что позволит вам ознакомиться с рамками довольно быстро.

Я думаю, что лучшие ответы о учебниках уже были предоставлены в качестве ответов на это вопрос:

ASP.NET MVC быстрые учебники

невероятно, я случайно удалил public ключевое слово от контроллера!

enter image description here

Я думаю, что это не поможет точно никому другому, но вы никогда не знаете ...

In asp.net mvc вы не можете использовать опцию "Установить в качестве начальной страницы", потому что представления mvc не являются независимыми, как страницы веб-форм. Это только файлы шаблонов для отображения вашей модели. У них нет модуля обработки http. Все веб-запросы должны проходить через действия контроллера, вы не можете запрашивать представления напрямую.

У меня была похожая проблема некоторое время назад при использовании VS 2012. Решается путем простого перестроения приложения, нажав кнопку построить > перестроить.

Если вы используете IIS Express. Возможно, вы открыли другой проект, который использует тот же виртуальный каталог. При открытии 2-го решения VS переназначает этот каталог IIS в другое место. В результате он не будет работать с различными проблемами. У меня была та же ошибка, что и тема стартера.

чтобы исправить: закройте все экземпляры VS Studio. Откройте VS с проектом, который вы работаете и перестраиваете.

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

(MVC 5): изменить RouteConfig.cs включить два routes такой:

            routes.MapRoute(
            name: "DefaultWithLanguage",
            url: "{language}/{controller}/{action}/{id}",
            defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional },
            constraints: new {language= "[a-z]{2}"}
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { language = "fa", controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

поэтому, когда языковая часть маршрута не указана, он не ошибается в именах контроллеров, которые не соответствуют регулярному выражению "[a-z]{2}" и заменяет язык по умолчанию и перенаправляет на остальной части маршрута...

asp.net стартовая страница проекта mvc-это" текущая страница " defaulty. Просто откройте файл на стороне сервера и запустите проект. таким образом, mvc открывает контроллер по умолчанию, который является homecontroller для вашего проекта

вы можете изменить начальную страницу внутри свойств вашего проекта (project -> project properties). На вкладке web вы можете выбрать specify page и измените начальную страницу на home/ или home/index. Это приведет вас к нужной странице в соответствии с вашими маршрутами. Адрес http://localhost:4148/Views/Home/Index.cshtml не работает специально, потому что он обрабатывается в соответствии с вашими маршрутами, которые утверждают, что url-адрес должен быть http://localhost:4148/ {controller} /{action} и необязательный / {id}.

Если вы хотите узнать больше о маршрутизации посмотри здесь.

чтобы увидеть ваш взгляд, как это:

http://localhost:1234/x/MyView

в xController.cs файл, в папке контроллеры,

убедитесь, что вы добавляете метод ActionResult следующим образом:

public ActionResult MyView()
{
    return View(whatever);
}

Я также получил это сообщение, когда я не ссылался на мое имя модели правильно:

@using (Html.BeginForm ("MyView"," MyModel", FormMethod.Сделать))

в адресной строке-браузер, такой: ControllerName/ActionMethod не input ControllerName/ViewName например в адресной строке:http://localhost:55029/test2/getview код файла cshtml:

@{
Layout = null; 
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>MyView</title>
</head>
<body>
<div>            
</div>
</body>
</html>

и cs код файла:

public ActionResult GetView()
{
return View("MyView");
}

Если вы пробовали все вышеперечисленные решения и проблема все еще сохраняется, то используйте это простое решение. Откройте отладчик facebook Из это ссылке, введите url страницы и нажмите на кнопку Fetch new Scrape Information. Это решит вашу проблему.

причина (что я думаю) заключается в том, что Facebook api сохраняет текущее состояние страницы и показывает то же самое со своего собственного сервера. если вы нажмете кнопку "Поделиться" во время кодирования, и ваша страница фактически не загружена, то Facebook api не удалось найти эту страницу на сервере и сохраняет состояние страницы как "ресурс не найден". Теперь он будет продолжать показывать одно и то же сообщение даже после загрузки страницы. Когда вы извлекаете страницу из отладчика facebook, он решает все с нуля и сохраняет текущее состояние страницы, а затем ваша кнопка share начинает работать без каких-либо изменений в кодировке.

у меня была такая же проблема, только я не использовал имя Index.cshtml для меня View, Я сделал это, например LandingPage.cshtml моя проблема заключалась в том, что ActionResult в моем контроллере не было того же имени, что и мое имя представления(в этом случае мой ActionResult назывался Index()) - это на самом деле очевидная и глупая ошибка с моей стороны, но я новичок в MVC, поэтому я потерплю неудачу с основами здесь и там.

так что в моем случае надо менять ActionResult чтобы быть таким же именем, как мой View : LandingPage.cshtml

    public ActionResult LandingPage()
    {
        ProjectDetailsViewModels PD = new ProjectDetailsViewModels();
        List<ProjectDetail> PDList = new List<ProjectDetail>();

        PDList = GetProductList();
        PD.Projectmodel = PDList;


        return View(PD);
    }

Я новичок в MVC, так что, возможно, это поможет кому-то еще, кто является новым и борется с тем же, что и я.

для меня проблема была вызвана проблемой пространства имен.

я обновил пространство имен проекта в своих классах веб-проектов от MyProject до MyProject.Веб, но я забыл обновить свойства проекта >> пространство имен по умолчанию. Поэтому, когда я добавил новый контроллер, он использовал старое пространство имен. Все, что мне нужно было сделать, это исправить пространство имен в новом контроллере, и это сработало.

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

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "usersController", action = "Index", id = UrlParameter.Optional }
        );
    }

решение состояло в том, чтобы изменить значение контроллера по умолчанию для пользователей, а не usersController

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "users", action = "Index", id = UrlParameter.Optional }
        );
    }

решил проблему, щелкнув правой кнопкой мыши на представлении, которое я хотел в качестве стартовой страницы после отображения ошибки" ресурс, который вы ищете, не может быть найден " просто щелкните правой кнопкой мыши на своем проекте, перейдите в веб и выберите текущую страницу. Это решит проблему

Comments

    Ничего не найдено.