none
Вопрос о расширении запрошенного имени файла в asp.net RRS feed

  • Вопрос

  • Нашел время, чтобы подробнее разобраться в тонкостях asp.net. Для ясности скажу, что работал немного на ASP.NET MVC, читал Сандерсона и кое-какие представления есть, но к сожалению никогда не вникал в работу asp.net web forms. Хочу сейчас разобраться в общей для них платформе asp.net, и в чем отличие mvc от web forms. Так же я жду от вас ссылки на статьи, если есть на такую тему хорошие.

    А сейчас собственно о вопросе. Читаю сейчас серию статей. процитирую оттуда:

    <sentencetext xmlns="http://www.w3.org/1999/xhtml">Когда веб-сервер получает запрос, он проверяет расширение имени запрошенного файла, определяет, какое расширение ISAPI должен обработать запрос, и затем передает запрос соответствующему расширению ISAPI.</sentencetext> <sentencetext xmlns="http://www.w3.org/1999/xhtml">ASP.NET обрабатывает расширения имени файла, сопоставленные ему, такие как aspx, ascx, ashx и asmx.</sentencetext> 

    Мне не ясно всегда ли требуется расширение? на mvc я не помню, чтобы я использовал при запросе страницы расширение. Видел, что для web forms расширения есть *.aspx

Ответы

  • Вот "Microsoft ASP.NET 4 с примерами на C# 2010 для профессионалов" вам одна из лучших книг по этой тематике.

    "Мне не ясно всегда ли требуется расширение? на mvc я не помню, чтобы я использовал при запросе страницы расширение. Видел, что для web forms расширения есть *.aspx" - на MVC по умолчанию включена система маршрутизации, которая сама назначает обработчик по умолчанию. В Web Forms, если маршрутизация не используется, то расширение файла обязательно, чтобы ASP.NET могла выбрать правильный обработчик запроса. Посмотрите эту статью, могут некоторые вещи проясниться.

    "Хочу сейчас разобраться в общей для них платформе asp.net, и в чем отличие mvc от web forms." в способе обработки запроса. В одном случае запрос в конечном счёте обрабатывает контроллер, в другом сам обработчик запроса, которым является обычно веб-форма.


    Сделаем содержимое сообщества лучше, вместе!

    Модератор
  • Дело в том, что есть две версии конвейера. До IIS 7 (IIS 5, IIS 6), который называется классическим, и после IIS 7 (7, 7.5, 8.0) интегрированный. Так в случае классического режима, работают именно эти расширения ISAPI, поэтому в данном случае без расширений не обойтись, даже в случае с MVC, чтобы именно ISAPI ASP.NET могла обрабатывать запрос. А в случае интегрированного режима все запросы обрабатывает управляемый конвейер ASP.NET. Так в моих статьях описан именно интегрированный режим конвейера, так как классический устарел и имеет массу недостатков. В новой версии книги которую я вам указал написано только про IIS 7, поэтому рекомендую найти предыдущую версию (ASP.NET 3.5), где подробно описаны оба режима.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Higgs.Boson 4 июля 2013 г. 7:20
    Модератор

Все ответы

  • Вот "Microsoft ASP.NET 4 с примерами на C# 2010 для профессионалов" вам одна из лучших книг по этой тематике.

    "Мне не ясно всегда ли требуется расширение? на mvc я не помню, чтобы я использовал при запросе страницы расширение. Видел, что для web forms расширения есть *.aspx" - на MVC по умолчанию включена система маршрутизации, которая сама назначает обработчик по умолчанию. В Web Forms, если маршрутизация не используется, то расширение файла обязательно, чтобы ASP.NET могла выбрать правильный обработчик запроса. Посмотрите эту статью, могут некоторые вещи проясниться.

    "Хочу сейчас разобраться в общей для них платформе asp.net, и в чем отличие mvc от web forms." в способе обработки запроса. В одном случае запрос в конечном счёте обрабатывает контроллер, в другом сам обработчик запроса, которым является обычно веб-форма.


    Сделаем содержимое сообщества лучше, вместе!

    Модератор
  • Спасибо за ценную информацию. Давно хочу почитать Вашу серию статей по конвейеру обработки запросов в ASP.NET, никак времени нет, работой поглощен.

    Дополнительный вопрос. И все-таки мне не ясно... Смотрите, насколько я знаю, IIS по расширению определяет какое ISAPI расширение должен обрабатывать запрос, не так ли?  То есть на уровне IIS (когда еще запрос не дошел до уровня маршрутизации) определяется, что запрос будет обрабатывать ASP.NET или иное ISAPI расширение. Соответственно, для MVC нет расширения. Тут что происходит? Подразумевается , что IIS по умолчанию (если нет расширения) кидает запрос для обработки в ASP.NET?


    • Изменено Higgs.Boson 4 июля 2013 г. 7:01 корректировка
  • Дело в том, что есть две версии конвейера. До IIS 7 (IIS 5, IIS 6), который называется классическим, и после IIS 7 (7, 7.5, 8.0) интегрированный. Так в случае классического режима, работают именно эти расширения ISAPI, поэтому в данном случае без расширений не обойтись, даже в случае с MVC, чтобы именно ISAPI ASP.NET могла обрабатывать запрос. А в случае интегрированного режима все запросы обрабатывает управляемый конвейер ASP.NET. Так в моих статьях описан именно интегрированный режим конвейера, так как классический устарел и имеет массу недостатков. В новой версии книги которую я вам указал написано только про IIS 7, поэтому рекомендую найти предыдущую версию (ASP.NET 3.5), где подробно описаны оба режима.

    Сделаем содержимое сообщества лучше, вместе!

    • Помечено в качестве ответа Higgs.Boson 4 июля 2013 г. 7:20
    Модератор
  • Вот теперь все понятно. Спасибо.