一般处理程序(ashx)获取不到POST请求的参数问题

写了一个一般处理程序来做接口,由于字段Content是文本,长度可能很长,鉴于这个原因,所以不能GET请求

所以问题来了,当我改成POST请求,自己使用HttpHelper类来写了一个Demo

code
var result = new HttpHelper().GetHtml(new HttpItem()
{
    URL = "http://localhost:24885/Comment.ashx",
    Method = "POST",
    Postdata = "action=insert_comment&art_id=1&art_title=文章标题&cid=&uid=1&unick=kerwin&content=你好&type=1&reply_id=&reply_nick=&parent_uid=&parent_nick=&parent_cid=&ip="
});
调式发现

Image

在context.Request["action"]、context.Request.Form以及context.Request.QueryString都获取不到上面的Postdata

但是我们可以在context.Request.InputStream参数中看见,InputStream是有长度的156 或者在context.Request.TotalBytes看见有数据

Image

所以我们可以通过以下代码获取参数

code
var pams = System.Text.Encoding.UTF8.GetString(context.Request.BinaryRead(context.Request.TotalBytes))
注意:通过上面这行代码获取参数只能获取一次,第二次获取则二进制数据不存在

我们可以对其进行解析,目前所知pams得到的数据有json序列化的的字符串,此时我们可以直接反序列化,但是如果请求的时候指定了Content-Type为application/json; charset=utf8或者为application/x-www-form-urlencoded;charset=utf-8此时,pams得到的并不是json序列化的字符串,而是含有断点续传的Boundary

原文地址:https://www.cnblogs.com/romanticcrystal/p/12047254.html

时间: 2024-08-29 14:37:07

一般处理程序(ashx)获取不到POST请求的参数问题的相关文章

ASP.NET MVC 项目中 一般处理程序ashx 获取Session

1-在 aspx和aspx.cs中,都是以Session["xxx"]="aaa"和aaa=Session["xxx"].ToString()进行读写. 而在ashx中,Session都要使用context.Session,读写方法是这样的: context.Session["xxx"]="aaa"和aaa=context.Session["xxx"].ToString() 2-在ash

jQuery获取一般处理程序(ashx)的JSON数据

昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程序ashx: 命名空间: using System.Data; using System.Collections.Generic; using System.Web.Script.Serialization; 输出的内容类型: context.Response.ContentType = "appl

一般处理程序ashx的好处

[免去了普通.aspx页面的控件解析以及页面处理的过程].这个是主要的.运行起来比.aspx快很多. .ashx 这个文件特别适合于生成动态图片,生成动态文本等内容. HttpHandler和ASP.NET窗体比较,最大的好处就是轻量. HttpHandler主要处理http请求,ASP.NET窗体除了处理http请求之外还要负责生成html页面,另外为了支持服务器空间添加了很多回调的逻辑. 各有各的好处,要灵活应用,例如你要返回一段json数据,HttpHandler就更佳. ASP.NET窗

学习笔记05一般处理程序ashx

1.获取由表单传过来的参数var value1 = HttpContext.Request["健"]; 2.使得网站目录下的相对路径转化为绝对路径:(用于文件操作)var fileName = Context.Request.MapPath("/xxx.txt");//当前处理程序目录下的xxx.txt; 3.页面跳转Context.Respone.Redirect("xxx.aspx");//ASP架构根据Context.Respone提供的属

Ajax 调用(传值)一般处理程序(.ashx)

问题:在一般处理程序(.ashx)中累加[index='b']的值 难点:前台获取JSON值后台解析 解决: //#region 把index=b的值存在JSON对象中 function AjaxGetSum() { var arr = []; $("input[index='b']").each(function () { var arrObject = {}; var tempVal = $(this).val(); if (!$.gstr.isEmpty(tempVal)) {

ASP.NET -- 一般处理程序ashx

ASP.NET  --   一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或aspx.vb文件. 入门案例:html页面向ashx页面请求数据,ashx作为后台页面返回数据. 前端html页面: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" co

一般处理程序中,获取session

注意了: 1.要在一般处理程序中获取其他页面的session值,需要引用名空间: using System.Web.SessionState; 2.然后继承一个接口:IRequiresSessionState,如图: 3.然后就可以获得session值了 string s =context.Session["Verifycode"].ToString();

一般处理程序ashx结合gdi+处理图片

1 新建一般处理程序  .ashx public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain";context.Response.Write("Hello World"); } 2. 引入命名空间  using System.Drawing; 3.因为是操作图片所以把context.Response.ContentType = "

Ajax请求传递参数遇到的问题

想写个同类型的,代码未测. 什么是WebAPI?我的理解是WebAPI+JQuery(前端)基本上能完成Web MVC的功能,即:这么理解吧,WebAPI相当于Web MVC的后台部分. 接下来直接上例子吧,都是我在学习过程中遇到或者发现的一些问题.  一.创建WebAPI项目 (这个环节不是本章重点) 二.传递参数遇到的问题 后台实体类(Person): 1 namespace WebApi.Models 2 { 3 public class Person 4 { 5 6 public int