日期:2014-05-17  浏览次数:20402 次

.net ashx临时处理文件 问题
public void ProcessRequest(HttpContext context)
  {
  context.Response.ContentType = "text/plain";
  int lycommid = 0;
  try
  {

  lycommid = int.Parse(context.Request.Params["lycommid"].ToString());
  }

上面 context.response.contenttype="text/plain";这是什么意思呢?
为什么获取 lycommid的值 还要 context.request.params 直接用request.params获取不到么?

------解决方案--------------------
这个可以解释ContentType:http://wenku.baidu.com/view/e1ab9aeb172ded630b1cb669.html
他是页面显示的类型
第二个是接收参数,你要看他是怎么传过来的,通过get还是post。
如果是get的话 你可以用context.Request.QueryString["id"]
如果是post的话 你可以用context.Request.Form["id"]来接收,
当然,不论什么方式,利用context.Request["id"]来接收都能接收到,不过安全性更加低了
希望对LZ有帮助
------解决方案--------------------
当你设置 context.response.contenttype 的时候,懂得解析它的浏览器就会正确处理它。例如当你的服务器向浏览器返回一些字节流,如果它是 text/html,那么浏览器就会将内容当作html而渲染。如果你写的是 application/word,浏览器就会看看本地有没有注册为处理word的应用程序并且用其打开。当你什么mime声明都不写,即使你明明在内容中输出为html,其实浏览器也可能弹出一个“下载、保存”窗口而把它当作文件下载来处理,这就因为你的mime没有正确标记的原因。

许多浏览器除了看这个标记,在它没有的时候也会去看所请求的url文件的后缀。多种可能性都试探了之后,如果还无法断定服务器输出的内容类型,就只能当作普通的文件下载处理了!




至于后边那个,其实两个是一样的。request.params 就是调用当前ashx对象(既当前page对象)的属性,“this.Request”,但是它其实就是在初始化时使用context.Request来赋值的。
------解决方案--------------------
上面 context.response.contenttype="text/plain";这是什么意思呢?----说明输出内容为普通的文本
为什么获取 lycommid的值 还要 context.request.params 直接用request.params获取不到么?---后者的Request是context的一个属性,你没有context怎么来的request呢,request.params这样写应该是报错的
------解决方案--------------------
context.Response.ContentType = "text/plain";
这个是设置响应输出类型,告诉浏览器对我响应的东西怎么进行处理
你可以看看怎么生成验证码 输出的是图片


context.request.params 看楼上各位的
------解决方案--------------------
context.request[""]这样就能去到值了,如果要分post和get的话就context.request.Forms[],context.request.Qustring[]