ashx代码中,实现IRequiresSessionState就无法获取post上来的数据?

石之审判 2018-03-16 10:38:10
本来好好的,新建一个ashx一般处理程序,post各种参数都没问题,能接收到。

然后由于一些特殊原因,需要在ashx里面使用session,网上查到需要实现IRequiresSessionState接口,于是写上去了,问题随之而来,之前好用的post参数,这次无论如何都接收不到了……但是如果把IRequiresSessionState删掉,又能正常接收post参数了……我用安卓的okhttp上传的参数,一直没问题,写法也没变……有谁知道为什么吗?

C#后台代码:
public class GetData1 : IHttpHandler, IRequiresSessionState
{

public bool IsReusable
{
get
{
return false;
}
}

public void ProcessRequest(HttpContext context)
{
//以下四种写法,都无法获取到post上来的参数,始终是null
string result = context.Request["abcd"]; //写法1
string result1 = context.Request.Params["abcd"]; //写法2
string result2 = context.Request.Form["abcd"]; //写法3
StreamReader streamReader = new StreamReader(context.Request.InputStream);
string result3 = streamReader.ReadToEnd(); //写法4
context.Response.ContentType = "text/plain";
context.Response.Write("传入:" + result + "," + result1 + "," + result2 + "," + result3);
}

}


安卓代码(Handler的代码就不贴了,关系不大):

public void getInfo(){
FormBody.Builder body = new FormBody.Builder();
body.add("abcd", "Mt_ktEdit");

final FormBody body1 = body.build();
Thread t = new Thread(new Runnable()
{
@Override
public void run()
{
String res = post(body1);
Message m = new Message();
m.obj = res;
m.what = GETINFO;
myHandler.sendMessage(m);
}
});
t.start();
}

public String post(FormBody body) {
String httpUrl = "http://192.168.5.112/GisYQMobile/RespondTomkmap.ashx";
OkHttpClient okHttpClient = new OkHttpClient();

Request request = new Request.Builder()
.url(httpUrl)
.post(body)
.build();
String text = null;

Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
text = response.body().string();
} catch (IOException e) {
//e.printStackTrace();
String sss= e.getMessage();
}
return text;
}
...全文
410 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
石之审判 2018-03-17
  • 打赏
  • 举报
回复
我换了一种方式,直接用java调用js来获取返回值,这样不用改js,也不用纠结session之类的东西了。
  • 打赏
  • 举报
回复
引用 2 楼 A12116 的回复:
我也没办法呀,这个Session,要在经理写的一个dll中使用,自己实现就没办法传到那个dll里面了……经理是不会改这个dll的…… 有别的方法吗?
你问问经理:“难道随便使用个 IRequiresSessionState 接口就能用上 Session,跟客户端应用开发工具没关系?”
石之审判 2018-03-16
  • 打赏
  • 举报
回复
引用 1 楼 closurer 的回复:
不使用 asp.net 的 session,自己实现一个 session 就行了。 其实 asp.net 的 session 并不好用。
我也没办法呀,这个Session,要在经理写的一个dll中使用,自己实现就没办法传到那个dll里面了……经理是不会改这个dll的…… 有别的方法吗?
闭包客 2018-03-16
  • 打赏
  • 举报
回复
不使用 asp.net 的 session,自己实现一个 session 就行了。 其实 asp.net 的 session 并不好用。
石之审判 2018-03-16
  • 打赏
  • 举报
回复
引用 7 楼 sp1234 的回复:
IRequiresSessionState 是给 asp.net 服务器端网页配套专用的,你们的经理如果是设计开发服务系统的,那么应该不会满脑子只有 asp.net 服务器端网页、只有微软开发平台,而是脑子里有通用的互联网概念、基于通用的 web 协议而设计。
原来是aspx页面,post的时候,后台接收不到post数据,始终是空,所以我才把经理代码移动到ashx里面的……
  • 打赏
  • 举报
回复
IRequiresSessionState 是给 asp.net 服务器端网页配套专用的,你们的经理如果是设计开发服务系统的,那么应该不会满脑子只有 asp.net 服务器端网页、只有微软开发平台,而是脑子里有通用的互联网概念、基于通用的 web 协议而设计。
mirrorspace 2018-03-16
  • 打赏
  • 举报
回复
一般处理程序.是精简的处理请求.既然使用这种,就自己实现session功能了. 可以在客户端用sessionstore,发请求时带上它
  • 打赏
  • 举报
回复
引用 2 楼 A12116 的回复:
我也没办法呀,这个Session,要在经理写的一个dll中使用,自己实现就没办法传到那个dll里面了……经理是不会改这个dll的…… 有别的方法吗?
跟公司老板说一下,你们这个经历只会写 asp.net 网页,还是别让他负责做更多系统。
  • 打赏
  • 举报
回复
嘿,既然你要用 IRequiresSessionState 接口,你为什么不用 asp.net 写网页呢?你是没有理解原理就乱写代码啊。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧