Внезапно я обнаружил, что ASP.NET 2.0 сам по себе обеспечивает естественную поддержку UrlMapping — раздел <urlMappings> в файле web.config. Я посетовал, что написание программ в настоящее время не является технической работой.
<?xml версия="1.0"?>
<конфигурация>
<система.веб>
<urlMappings>
<add url="~/2006/07" MappedUrl="~/Month.aspx?year=2006&month=01"/>
<add url="~/2006/08" MappedUrl="~/Month.aspx?year=2006&month=02"/>
</urlMappings>
<компиляция debug="true"/>
</система.веб>
</конфигурация>
Такая конфигурация позволяет программе ASP.NET напрямую поддерживать UrlMapping на сервере разработки ASP.NET (то есть выбирать файловую систему при построении проекта ASP.NET), но у нее есть несколько недостатков:
1. Можно сопоставить только фиксированные адреса, поэтому можно настроить только один адрес.
2. Нет необходимости настраивать что-либо еще на сервере разработки ASP.NET. Учитывая модель ответа на запрос в IIS, предполагается, что сопоставление необходимо настроить в IIS. В этом случае я повсюду искал информацию, чтобы узнать, как настроить сопоставление на сервере разработки ASP.NET, но в результате это не сработало.
Ввиду того недостатка UrlMapping, что он не поддерживает регулярные выражения, я сделал UrlMapping, поддерживающий регулярные выражения. К сожалению, поскольку UrlMapping вызывается HttpApplication, а HttpApplication — Internal, он не может ничего с ним сделать, поэтому реализация ненадежна. По сравнению с UrlMapping
загрузите дополнительный файл <Section> в Web.config (загруженный файл включает компонент RegexUrlMapping и образец ASP.NET. Обратите внимание, что программу ASP.NET необходимо развернуть в IIS и настроить сопоставление. Метод: щелкните правой кнопкой мыши виртуальный каталог, выберите «Свойства», выберите «Конфигурация», добавьте ссылку на c:windowsmicrosoft.netframeworkv2.0.50727aspnet_isapi.dll в сопоставлении приложений с подстановочными знаками и удалите привязку к. подтвердите, существует ли файл, вот: Чтобы быть ленивым, я использую подстановочные знаки для сопоставления всего с ISAPI ASP.NET 2.0. В реальной разработке лучше всего добавлять более конкретные сопоставления по мере необходимости)
Примеры конфигурации в Web.config: следующее:
<?xml версия="1.0"?>
<конфигурация>
<конфигурационные секции>
<section name="RegexUrlMappings" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingsSection,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</configSections>
<RegexUrlMappings Enable="true" rebaseClientPath="true">
<add url="(d+)$" mappedUrl="default.aspx?id=$1"/>
<add url="(?<=/)(?<id>[az]+)$" mappedUrl="default.aspx?id=${id}" />
<add url="/$" mappedUrl="/default.aspx?id=0"/>
</RegexUrlMappings>
<система.веб>
<httpМодули>
<add name="RegexUrlMappingModule" type="Cnblogs.DTC.THIN.RegexUrlMapping.RegexUrlMappingModule,Cnblogs.DTC.THIN.RegexUrlMapping"/>
</httpМодули>
<компиляция debug="true"/>
<режим аутентификации="Windows"/>
</система.веб>
</configuration>
Включенный атрибут RegexUrlMapping используется для открытия и закрытия сопоставления. Для rebaseClientPath см. параметр rebaseClientPath в HttpContext.RewritePath.
<add> используется для добавления правил сопоставления, url — это шаблон регулярного выражения, соответствующий пути, а mappedUrl — это правило замены. Для использования см. метод Regex.Replace. В приведенном выше примере первое добавление определяет группу 1 с помощью. круглые скобки в URL-адресе, поэтому в ссылке позже $1
Второе добавление использует (?<id>) в URL-адресе для определения идентификатора группы, а затем использует ${id} для ссылки на группу. Третий вариант — замена фиксированной строки. Похоже, регулярные выражения по-прежнему очень важны~~
http. ://www.cnblogs.com/thinhunan/archive/2006/08/22/regexurlmapping.html