Почему мой документ IIS по умолчанию не найден MVC

Я знаю, что здесь есть миллион похожих/одинаковых вопросов (я знаю это, потому что читал их), но я просто не могу понять, почему мой документ по умолчанию не отображается. Раньше это было; и если я включу веб-сайт по умолчанию, то отобразится страница этого сайта по умолчанию. Код ошибки HTTP — 404.

РЕДАКТИРОВАТЬ: Это потому, что я использую «localhost» или домен верхнего уровня? То есть https://localhost/MyDefault.html работает, но я получаю 404 от https://localhost.

Я считаю/предполагаю, что что-то в следующем является проблемой. Раньше работало: -

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <defaultDocument enabled="true">
      <files>
        <clear />
        <add value="MyDefault.html" />
      </files>
    </defaultDocument>
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
  </system.webServer>

Я искал 2 дня, а затем наткнулся на то, что, по моему мнению, было решение, но, к сожалению (как бы уместно это ни звучало), оно не работает :-(

К вашему сведению, это SPA/PWA, и когда я говорю mvC, это действительно только контроллер.

Вот часть Global.asax.

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("");

        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();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

Контроллер HOME недоступен.

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

Запрашиваемый URL: /

Информация о версии: Версия Microsoft .NET Framework: 4.0.30319; Версия ASP.NET: 4.8.3752.0

В FRL не создаются файлы

Журналирование неудачных запросов

Ведение журнала IIS

Это ошибка 404: - 2019-12-04 03:55:34 ::1 GET / - 443 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+ (KHTML,+нравится+Gecko)+Chrome/78.0.3904.108+Safari/537.36 - 404 0 0 4

Вот сводка запроса FRT. Полную трассировку можно найти на сайте Complete FRT.

введите здесь описание изображения

[4]:


comment
Прежде чем заявлять, что что-то не работает, запустите базовую диагностику, такую ​​как FRT, docs.microsoft.com/en-us/iis/troubleshoot/   -  person Lex Li    schedule 03.12.2019
comment
Какая версия MVC и IIS?   -  person Pranav Singh    schedule 03.12.2019
comment
IIS 10 Windows 10 .Net 4.7.2 выводит библиотеку классов   -  person McMurphy    schedule 03.12.2019
comment
@lex Li Я включил ведение журнала неудачных запросов для моего сайта, который создал каталог, потому что я не получаю никаких созданных файлов.   -  person McMurphy    schedule 03.12.2019
comment
О, и версия MVC 5.2.7.0   -  person McMurphy    schedule 03.12.2019
comment
Я попробовал вашу конфигурацию, и, похоже, она отлично работает на моей стороне. Включите отслеживание неудачных запросов и журнал IIS. Пожалуйста, опубликуйте его код подстатуса, потому что это не простая ошибка 404.0. Кроме того, какой обработчик вернул эту ошибку? Пожалуйста, разместите более подробную информацию. Если код ошибки 404.0, попробуйте монитор процессов, чтобы отследить статус ввода-вывода. Он скажет нам, какой файл он читает.   -  person Jokies Ding    schedule 03.12.2019
comment
Я разместил небольшую информацию журнала, которая кажется доступной. Может @Jokies Ding опубликовать свой web.config в качестве ответа? И спасибо за вашу помощь!   -  person McMurphy    schedule 04.12.2019
comment
@McMurphy Вы создали правило FRT для ошибки 404.0? Очень странно, что IIS возвращает ошибку 404.0. Поэтому очень важно знать, какой обработчик вернул эту ошибку. Если ошибка возвращается из документа по умолчанию, нам нужно использовать монитор процессов для отслеживания ошибки отказа в доступе или ошибки «Файл не найден». Но похоже, что ваше приложение все еще пытается загрузить индекс с недоступного домашнего контроллера.   -  person Jokies Ding    schedule 04.12.2019
comment
@Jokies Ding, спасибо, что придерживаетесь этого! Да, глупый я, у меня не было настроенного правила, но теперь я потерял кучу трассировки и не знаю, где искать? Прикрепите соответствующие 404 надежды выше.   -  person McMurphy    schedule 04.12.2019
comment
@McMurphy Вы загрузили полный журнал FRT? Ваш журнал сообщений просто показывает, что IIS возвращает ошибку 404 напрямую. Вы можете открыть файл .xml через IE, и вы увидите полностью отформатированный отчет в формате html. Кроме того, можно ли получить работу с документами по умолчанию на простом веб-сайте? Если то, что вы опубликовали, является полным журналом FRT, я думаю, что что-то не так с вашим конвейером IIS.   -  person Jokies Ding    schedule 04.12.2019
comment
Не просто 404 фрагмента. Полный журнал FRT довольно большой. Могу ли я фильтровать только сбои WWW или вам также нужно видеть ISAPI? Также я изменил домашний индекс по умолчанию на существующий контроллер/действие, и это ничего не изменило. Завтра я опубликую полный журнал в качестве ответа, если вы не скажете мне, что искать?   -  person McMurphy    schedule 04.12.2019
comment
Я создал общую ссылку для всего файла: drive.google.com/ open?id=1lTv9hpkk2-kyWXne7NpdBnDstHWgJ-uX Я обновлю сводку по краям в основной части вопроса. Спасибо @Jokies Дин   -  person McMurphy    schedule 05.12.2019
comment
@McMurphy Кроме того, не забудьте удалить ссылку из журнала FRT. Поскольку нет уверенности, что он раскроет некоторую конфиденциальную информацию вашего веб-приложения.   -  person Jokies Ding    schedule 05.12.2019


Ответы (1)


Мой ответ слишком длинный, поэтому я не могу опубликовать его в комментарии. Я просмотрел ваш журнал и заметил, что 404 исходит из управляемого конвейера asp.net. И обработчик статических файлов даже не участвует в этом запросе.

Поэтому я думаю, что что-то не так с вашим проектом или обработчиком без расширений ExtensionlessUrlHandler-Integrated-4.0. введите здесь описание изображения

Прежде всего, нам нужно проверить, нормально ли работает route.ignoreroute в Visual Studio. Вы получили 403.14, даже если в корневой папке вашего проекта нет файла Mydefault.html?

Потому что я заметил, что вы регистрируете RouteConfig.RegisterRoutes(RouteTable.Routes) в global.asax, но не включили его в класс RouteConfig. Я привык создавать отдельный Route.config для хранения таблицы маршрутов.

Если он отлично работает в VS, пытались ли вы очистить все файлы выпуска в корневой папке и повторно опубликовать с помощью инструмента развертывания VS? Вы видели обработчик staticfile в сопоставлении обработчика диспетчера IIS? Кроме того, проверьте, есть ли у вашего идентификатора пула приложений и IUSR разрешение на доступ к корневой папке вашего веб-сайта. Поскольку это не типичная ошибка 404, нам, возможно, придется устранять неполадки шаг за шагом.

Изменить: введите здесь описание изображения

person Jokies Ding    schedule 05.12.2019
comment
Пожалуйста, посмотрите в моем файле web.config, где я удаляю и устанавливаю все обработчики ExtensionlessUrlHandler-* IIRC, возможно, это произошло из-за предварительной проверки OPTIONS, но, несмотря на это, было необходимо, чтобы мои действия Ajax data/getFromDB были найден и работает корректно. В других сообщениях упоминается то же самое со статическим обработчиком файлов, но это снова приводит к сбою моих относительных URL-адресов контроллера. Я использую ApplicationPoolIdentity. Когда я заменяю маршрутизацию на контроллер Home/Index существующим, он не вызывается. В VS тоже НЕ работает. Я публикую через Build--›Publish. - person McMurphy; 05.12.2019
comment
@McMurphy Вы видели, как ваш обработчик упорядочен, как мой пост выше? Если ваша таблица маршрутов даже не привела ваш индекс 403.14 в Visual Studio, то это не должно быть проблемой IIS. Кроме того, вы изменили свой файл global.asax, который вы разместили ранее? Если вы не разместили RegisterRoutes в классе RouteConfig. Затем вы должны просто зарегистрировать RegisterRoutes(RouteTable.Routes) в Application_Start() вместо RouteConfig.RegisterRoutes(RouteTable.Routes); - person Jokies Ding; 05.12.2019