HTTPResponse没有到达客户端

时间:2013-11-19 16:01:36

标签: c# http

我有一个http处理程序,已注册并正常工作。现在我想处理一个请求,并发送一个自定义的html响应,然后显示在客户端上。

所以我的函数编写如下:

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甚至从未发送过。

我忘记了一些事吗

1 个答案:

答案 0 :(得分:1)

由于请求未在Fiddler中显示为发送回客户端(也不会将错误发送回客户端),因此路由引擎可能会妨碍请求。该场景由phil hack描述。

  

但是,在其他情况下,您可能会收到文件请求   在磁盘上不存在。例如,如果您注册HTTP处理程序   直接到实现IHttpHandler的类型。更何况   浏览器自动生成的favicon.ico请求。 ASP.NET   路由尝试将这些请求路由到控制器。一个解决方案   这是为了添加一个适当的忽略路由来指示路由   应该忽略这些要求。不幸的是,我们做不了什么   像这样:{* path} .aspx / {* pathinfo}

您需要设置路由引擎以忽略具有文件扩展名的路由。 E.G。

routes.IgnoreRoute("{*allaspx}", new {allaspx=@".*\.aspx(/.*)?"});
routes.IgnoreRoute("{*favicon}", new {favicon=@"(.*/)?favicon.ico(/.*)?"});