<?php
$url = "http://www.mydomain.com/abc/"; //https://www... http://... https://...
echo substr(parse_url($url)['path'],1,-1); //return abc
?>
Можно также хотеть удостовериться, что Вы используете проекты веб-приложения, который является тем, что Вы использовали в VS2003 и не веб-сайте "проекты", которые не являются проектами.
Выполните эти шаги для добавления HTTP-модуля:
MyModule
.System.Web.dll
блок.Добавьте следующую директиву к классу:
using System.Web;
Переименуйте класс SyncModule.cs
, и затем измените определение класса для отражения этого.
Реализуйте IHttpModule
интерфейс. Ваше определение класса должно появиться следующим образом:
public class SyncModule : IHttpModule
Решите, на которые события Вы подпишетесь. Следующий список обрисовывает в общих чертах доступные события от HttpApplication
возразите, на который можно подписаться:
AcquireRequestState
: Назовите это событие, чтобы позволить модулю получать или создавать состояние (например, сессия) для запроса.AuthenticateRequest
: Назовите это событие, когда модуль безопасности должен аутентифицировать пользователя, прежде чем это обработает запрос.AuthorizeRequest
: Назовите это событие модулем безопасности, когда запрос должен будет быть авторизован. Названный после аутентификации.BeginRequest
: Назовите это событие, чтобы уведомить модуль, что новый запрос начинается.Disposed
: Назовите это событие, чтобы уведомить модуль, что приложение заканчивается по некоторым причинам. Позволяет модулю выполнять внутреннюю очистку.EndRequest
: Назовите это событие, чтобы уведомить модуль, что запрос заканчивается.Error
: Назовите это событие для уведомления модуля ошибки, которая происходит во время обработки запросов.PostRequestHandlerExecute
: Назовите это событие, чтобы уведомить модуль, что обработчик закончил обрабатывать запрос.PreRequestHandlerExecute
: Назовите это событие, чтобы уведомить модуль, что обработчик для запроса собирается быть названным.PreSendRequestContent
: Назовите это событие, чтобы уведомить модуль, что содержание собирается быть отправленным клиенту.PreSendRequestHeaders
: Назовите это событие, чтобы уведомить модуль, что HTTP-заголовки собираются быть отправленными клиенту.ReleaseRequestState
: Назовите это событие, чтобы позволить модулю выпускать состояние, потому что обработчик закончил обрабатывать запрос.ResolveRequestCache
: Назовите это событие после аутентификации. Кэширование модулей использует это событие, чтобы определить, должен ли запрос быть обработан его кэшем или если обработчик должен обработать запрос.UpdateRequestCache
: Назовите это событие после ответа от обработчика. Кэширование модулей должно обновить их кэш с ответом.Реализуйте методы Init и Dispose интерфейса IHttpModule следующим образом:
public void Init(HttpApplication app)
{
app.BeginRequest += new EventHandler(OnBeginRequest);
}
public void Dispose(){ }
Создайте делегата к событию следующим образом:
public delegate void MyEventHandler(Object s, EventArgs e);
Определите частную локальную переменную типа MyEventHandler
содержать ссылку на событие:
private MyEventHandler _eventHandler = null;
Создайте событие, которое поднимает трубку делегата в методе в файле Global.asax или классе, который наследовался HttpApplication
объект:
public event MyEventHandler MyEvent
{
add { _eventHandler += value; }
remove { _eventHandler -= value; }
}
Создайте OnBeginRequest
метод, который сцепляется до BeginRequest
событие HttpApplication
:
public void OnBeginRequest(Object s, EventArgs e)
{
HttpApplication app = s as HttpApplication;
app.Context.Response.Write("Hello from OnBeginRequest in custom module.<br>");
if(_eventHandler!=null)
_eventHandler(this, null);
}
Скомпилируйте проект
источник: http://support.microsoft.com/kb/307996
Добавление HTTP-модуля к Вашему web.config
посмотрит что-то как следующее:
<system.web>
<httpModules>
<add name="CustomHttpModule" type="MyCustomHttpModule"/>
</httpModules>
</system.web>
Две распространенные причины, по которым точки останова не попадают в HttpModule:
Этот всегда достается мне. Если вы хотите отладить конструкцию модуля , вы должны вручную подключить отладчик . Для этого в Windows 7 (аналогично в Vista):
Обновите браузер, и теперь вы должны достичь точки останова.
Если вы можете сказать, что код модуля определенно выполняется , то проблема не в этом. Но иногда, когда модуль нормально загружается на других машинах, он может не загружаться в вашем устройстве разработчика, потому что у вас другая версия IIS и у вас нет необходимой конфигурации.
Если это так, убедитесь, что модуль правильно подключен для всех необходимых версий IIS.
Для IIS 5.1 и IIS 6 ...
<system.web>
<httpModules>
<add name="CustomHttpModule" type="MyCustomHttpModule"/>
</httpModules>
</system.web>
... и для IIS 7+
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="CustomHttpModule" type="MyCustomHttpModule"/>
</modules>
</system.webServer>