2015-05-29 4 views
1

Можно ли вызвать другого обработчика изнутри обработчика? У меня есть пользовательский обработчик, который срабатывает всякий раз, когда запрашивается тип файла, а затем im проходит через некоторый процесс аутентификации и требует вызова другого обработчика.asp.net общий обработчик вызова другого обработчика

Моя проблема: я понятия не имею, как обращаться с вызовом другого обработчика из этого обработчика.

Большое спасибо

+0

Короткий ответ: HttpWebRequest.Create. Более длительный ответ для ответа –

ответ

3

обработчик Http это просто класс. Вы можете создать экземпляр, как и любой другой класс, и называет его методом ProcessRequest.

Лучшим вариантом было бы избежать вызова обработчика-обработчика, а вместо этого перевести общий код в класс утилиты и вызвать его из обоих обработчиков.

Я предполагаю, что вы хотите, чтобы вызовы обработчика передавали потоки HttpContext и запроса/ответа. Если вы хотите, чтобы первый обработчик вызывал второго обработчика, читал его ответ и возвращал собственный ответ, вы, вероятно, захотите использовать ответ Гленна вместо этого.

0

Вот один из способов назвать это other handler:

public class Handler1 : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/plain"; 

     var otherurl = "https://localhost:81/otherhandler.ashx"; 
     // using System.Net; 
     var req = (HttpWebRequest)HttpWebRequest.Create(otherurl); 
     var sr = new StreamReader(req.GetResponse().GetResponseStream()); 
     // read stuff: sr.ReadBlock(), sr.ReadToEnd(), ... 
     // do something with the response 

     context.Response.Write("Hello World"); 

    } 
} 
+0

В зависимости от специфики обработчиков вам может потребоваться добавить код для копирования исходного запроса во внутренний запрос, отправляемый с использованием объекта HttpWebRequest, например. если второй обработчик ожидает, что любые переменные будут переданы в форме/сообщении или в строке запроса, или если он имеет какие-либо зависимости от любого из стандартных заголовков HTTP, например. пользовательский агент. –

Смежные вопросы