.NET HTTP处理程序 - 如何发送自定义响应?

时间:2011-09-03 02:49:07

标签: .net http handler

我已将自定义(基于套接字)的服务器转换为IIS(.NET 4.0)中的HTTP处理程序。

我已将客户端转换为以正确格式发送HTTP GET。

我不想更改客户端的响应处理代码来解析HTML代码。这是后方的痛苦也是不必要的。我不需要此服务器与浏览器一起使用或与我的客户端以外的任何东西兼容。

所以,我基本上需要HTTP Handler(服务器)来发送客户端期望的响应 - 没有“HTML / 1.0”,标题和诸如此类的东西。

我目前正在使用HttpContext.Response.Write()方法。我认为有一种方法可以将原始数据写入响应,或者删除我想要发送的数据周围的所有标题和HTML标记。

提前感谢您的帮助。 戴夫

1 个答案:

答案 0 :(得分:7)

如果您在浏览器中查看此内容以进行验证,那么您可能会看到的是浏览器尝试修复您的HTML。

例如,如果我在我的处理程序中有这个:

public void ProcessRequest(HttpContext context)
{
    context.Response.Write("Hello World");
}

然后响应标题将如下所示:

  

HTTP / 1.1 200 OK
  服务器:ASP.NET Development Server / 10.0.0.0
  日期:星期六,03九月2011 03:26:36 GMT
  X-AspNet-Version:4.0.30319
  缓存控制:私人
  内容类型: text / html ;字符集= UTF-8
  内容长度:11
  连接:关闭

响应的实际内容只是

  

Hello World

您会注意到默认内容类型为 text / html ,但是,您基本上可以完全控制响应。您可以清除标题,添加新标题,并相应地设置内容类型:

public void ProcessRequest(HttpContext context)
{
    context.Response.ClearHeaders();
    context.Response.AddHeader("my-skillz", "being AWESOME!");
    context.Response.ContentType = "text/plain";
    context.Response.Write("Hello World");
}

将产生以下响应标题:

  

HTTP / 1.1 200 OK
  服务器:ASP.NET Development Server / 10.0.0.0
  日期:星期六,03九月2011 03:40:14 GMT
  X-AspNet-Version:4.0.30319
   my-skillz:太棒了!
  缓存控制:私人
  内容类型: text / plain ;字符集= UTF-8
  内容长度:11
  连接:关闭

所以你有它。看看HttpResponse上的文档,这样您就可以看到所有可用的内容,并且您应该能够从响应中获得您想要的内容,而不会有任何额外的麻烦,并且在任何地方都没有HTML。