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

Jin*_*Jin 3 .net http handler

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

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

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

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

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

在此先感谢您的帮助.戴夫

Jos*_*osh 7

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

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

public void ProcessRequest(HttpContext context)
{
    context.Response.Write("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

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

HTTP/1.1 200 OK
服务器:ASP.NET开发服务器/
10.0.0日期:2011年9月3日星期六03:26:36 GMT
X-AspNet-版本:4.0.30319
缓存控制:私有
内容类型:text/html ; charset = utf-8
内容长度:11
连接:关闭

响应的实际内容很简单

你好,世界

您会注意到默认内容类型是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");
}
Run Code Online (Sandbox Code Playgroud)

这将产生以下响应标头:

HTTP/1.1 200 OK
服务器:ASP.NET开发服务器/
10.0.0.0日期:星期六,03九月2011 03:40:14 GMT
X-AspNet-Version:4.0.30319
my-skillz:太棒了!
Cache-Control:private
Content-Type:text/plain ; charset = utf-8
内容长度:11
连接:关闭

所以你有它.看一下HttpResponse上的文档,这样你就可以看到所有可用的东西了,你应该能够在没有任何额外麻烦的情况下获得你想要的答案,并且看不到任何HTML.