Транзакция, да, или "Запрос HTTP ожога состоит из одного сообщения Запроса HTTP и одного Ответного сообщения HTTP".
A) Вы делаете это, изменяя Web.config:
<system.web>
<httpHandlers>
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory"/>
</httpHandlers>
</system.web>
B) Причина в том, чтобы не дать зрителям узнать, какая среда выполнения стоит за сайтом, но в большинстве случаев с ASP.NET , это легко узнать по его дополнениям к HTML (таким как состояние просмотра и т. д.)
C) На самом деле это зависит от вас, я бы не сказал, что это хорошо или плохо.
Возможно, вам потребуется также указать buildHandler
:
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true">
<buildProviders>
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<add verb="*" path="*.html" type="System.Web.UI.PageHandlerFactory" />
</httpHandlers>
</system.web>
</configuration>
B) C)
Если URL-адреса являются общедоступными, вы должны указать соответствующую информацию URL-адреса и вещи, которые вряд ли изменятся в ближайшие 10-20 лет (или больше .. ), и это будет:
Эти вещи могут измениться со временем:
. Если URL-адреса являются частными, не имеет значения, как вы их создаете, если это помогает ваше приложение.
Я был подрядчиком на крупном автомобильном сайте, и нас попросили вообще не отображать расширения файлов, потому что компания (очень-очень большое информационное агентство) не хотела, чтобы одна технология важнее другой для своих инвесторов и поставщиков - это было чисто бизнес-решение, а не технический прием или попытка скрыть безопасность.
C) Нет никаких рекомендаций за или против, но вы должны быть осторожны при создании * .html перешел на ASP.
Это могло быть связано с SEO. Google не любит такие URL:
longurl.com/index.aspx?id=1&time=3&this=2
Возможно, член команды хочет перенаправить URL по-другому, чтобы Google с большей вероятностью их забрал.
longurl.com/index/1/3/2.html
Не спрашивайте меня, почему Google предпочитает это , но это просто так. Если бы мне пришлось нанести удар, ему бы хотелось знать, что контент есть. Очевидно, что верхняя ссылка генерируется динамически и не всегда может быть там.
Конечно, если это для внутреннего веб-приложения, это может быть попытка помешать пользователям вмешиваться в строку URL и нарушать работу сайта. .
РЕДАКТИРОВАТЬ: Таким образом, как видно из приведенных выше ответов, для этого потенциально может быть более одной причины. Однако безопасность от хакеров кажется довольно плохой причиной. Если код достаточно надежен,
A: Используя MVC поверх ASP.NET, вы можете создать маршрут, который можно сопоставить практически с любым типом URL-адреса.
routes.MapRoute("Route1", "Foo/{Cat}/{SubCat}/{Record}.html", new { controller = "Foo", action = "Record" });
B) Единственная причина, по которой я могу это сделать, - это скрыть очевидный идентификатор технологии на стороне сервера, которую вы используете. Однако это защита от неизвестности, и она никогда не должна быть вашей единственной и основной мерой безопасности. Если вы хотите сделать это из эстетических соображений или чего-то еще, хорошо, но не ожидайте, что это остановит решительного хакера.