2013-11-19 4 views
0

У меня есть обработчик http, который зарегистрирован и работает нормально. Теперь я хочу обработать запрос и отправить настраиваемый html-ответ, который затем отображается на клиенте.HTTPResponse не прибывает на клиента

Так что моя функция записываются следующим образом:

public void ProcessRequest(HttpContext _context) 
{ 
    HttpResponse response = _context.Response; 

    response.Clear(); 
    var requestedUrl = _context.Request.Url; 
    PhantomModuleController pmc = new PhantomModuleController(); 
    response.BufferOutput = true; 
    var snapshot = pmc.DoThings(requestedUrl); //this returns a string 
    response.Write(snapshot); //i put it in the response 
    response.ContentType = "text/html"; 
    response.End(); //it should send it to the client now 
} 

Но по моей стельке, ответ никогда не приходит на клиенте. Фактически, httpresponse никогда не отправляется.

я забыть somethiing

+0

Является ли обработчик http обработчиком событий или реализацией интерфейса или дочернего класса или что? Какая технология MVC, веб-формы или другое? –

+0

Может быть таким же, как в этом вопросе: http://stackoverflow.com/questions/2246991/httpwebrequest-httpresponse-how-to-send-data-in-the-response –

+0

Это приложение mvc, и httphandler происходит от ihttphandler –

ответ

1

Поскольку запрос не отображается в Fiddler, как отправляется обратно клиенту (и не ошибка обратно клиенту) Помог, механизм маршрутизации может получать в пути запроса , Сценарий описывается phil hack.

Однако есть и другие случаи, когда у вас могут быть запросы на файлы , которых нет на диске. Например, если вы зарегистрируете обработчик HTTP непосредственно для типа, реализующего IHttpHandler. Не говоря уже о запросах на favicon.ico, которые браузер делает автоматически. ASP.NET Маршрутизация пытается перенаправить эти запросы на контроллер. Одно из решений - это добавить соответствующий маршрут игнорирования, чтобы указать, что маршрутизация должна игнорировать эти запросы. К сожалению, мы не можем сделать что-то так: {* путь} .aspx/{*} PathInfo

Вам нужно настроить маршрут двигатель игнорировать маршрут, который имеет расширение файла. НАПРИМЕР.

routes.IgnoreRoute("{*allaspx}", new {[email protected]".*\.aspx(/.*)?"}); 
routes.IgnoreRoute("{*favicon}", new {[email protected]"(.*/)?favicon.ico(/.*)?"}); 
Смежные вопросы