.net中的httphandler可以返回一个值吗?如果是的话怎么样?
谢谢,
Subrat
答案 0 :(得分:2)
IHttpHandler
接口只实现两件事:
Boolean IsReusable {get;}
void ProcessRequest(HttpContext context);
所以没有......在最严格的意义上说,它并不意味着返回一个值。现在,您可以根据需要调整response的形状(SOAP / XML / JSON)。所以实际上,只要HTTP能够支持它,您就可以返回您心中所需的任何内容,而消费它的客户端知道如何处理它。
但是,尝试通过HttpHandler
实现自己的服务是不明智的,因为有simpler and more efficient ways来完成同样的事情。
答案 1 :(得分:1)
HttpHandler
方法的ProcessRequest(HttpContext context)
响应,您可以在其中修改参数context
,以告知您要将哪些内容作为回复发回。 context.Response.ContentType
指定响应的MIME类型,例如响应为text/html
,因此浏览器会将其呈现为html页面。或者响应是video/mp4
浏览器将尝试打开它在大多数情况下,浏览器将显示下载对话框。不幸的是,MIME类型中没有text/array
(我认为将来不会有)。但是您可以将数组值作为纯文本传递给特殊格式,并在客户端对其进行反序列化。这是一个简单的例子:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("[1,2,3,4]");
}
在javascript中的客户端:
var response = GetTheResponse(); //maybe via ajax or something equivalent.
var myArray = eval(response); //myArray[0]=1,myArray[1]=2...
在实际项目中,您可能希望获得一个包含复杂对象的数组(而不仅仅是简单的数字)。因此,您需要系统化的序列化/反序列化标准,例如,将Person
对象的数组序列化为json字符串并将其写入响应,然后使用一些json utils在客户端反序列化它们。