ASP.NET进行请求转发
前言
前两天将网站的部分功能在小程序上实现,网站的后台是http,没有配置域名和安全证书,小程序的线上版本是无法访问的,因此需要从配有域名和安全证书的站点进行转发。即小程序请求A,A转发请求到B,B获取数据给A,A再回传给小程序。
本文若有出入,请指正——来自渣渣的颤抖
客官可移步到https://fanjiajia.cn/2019/07/04/Cplusplus/flx1/
ASP.Net接收前台发送的请求都是从一个一般处理程序ashx开始的
public void ProcessRequest(HttpContext context)
context即为请求的上下文,包括了请求的参数等等信息。
实现
一开始,我自信的以为实现这样的转发是特别easy的一件事,因为在我漫无边际的知识储备中,一个熟悉而又陌生但却非常有好感的字眼——redirect浮现在我眼前,完美。
然而,啪啪啪打脸发生在我redirect之后,B获取参数抛出一个非常性感的异常,未将对象添加到引用的实例,即空指针异常。
仔细一想,mb,redirect后参数没有带过去啊,但是说明转发成功了,开森,然而,我真的太年轻啊。
百度,没有人说redirect可以带参数,(所以我也不知道到底可不可以),凉凉
没办法最后只能新建一个request,自己封装请求。
try
{
string host_reservation = ""; // 本地车辆预约网站后台
string host_reservation = ""; // 实验楼车辆预约网站后台
string host_reservation = ""; // 现场车辆预约网站后台
string baseurl_reservation = "http://" + host_reservation + "/Handler/WebSpace/XX/XX.ashx";
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(baseurl_reservation);
Encoding encoding = Encoding.UTF8;
string param = HttpUtil.GetPostParams(context);
Utility.LogWrite.WriteTestLog("paras", param);
byte[] bs = Encoding.UTF8.GetBytes(param);
string responseData = String.Empty;
req.Method = "POST";
req.ContentType = "application/json"; // 'application/json' "application/x-www-form-urlencoded"
req.ContentLength = bs.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
reqStream.Close();
}
using (HttpWebResponse response = (HttpWebResponse)req.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
{
responseData = reader.ReadToEnd().ToString();
}
context.Response.Write(responseData);
}
}
catch (Exception e)
{
LogWrite.WriteSysLog("Reservation_Location", e);
context.Response.Write(BackDataUtil.BackResult(110, "异常了", "0"));
}
其实也不复杂,就是再发起一次请求,这里注意,req.ContentType,我已开始用的application/x-www-form-urlencoded,发送到B的中文会乱码
最后完美实现,然而没高兴多会儿,直接抛弃了我这么
辛苦实现的,因为这玩意实在是太慢了,本来B上的处理,数据量就较大,再加上转发,慢得我可以边等他加载,边玩王者,,,,,为什么说这玩意慢呢,因为现在把B上的内容copy到A上了,不转发了,确实快了,在下觉得是不是因为这里的流处理,流这个东西,谁知道呢!
最后
此致,敬礼
ASP.NET进行请求转发的更多相关文章
- C# HttpClient 请求转发
最近在做一个项目,需要用到别人的接口,但是遇到一个问题,这个接口只能在服务器上访问,不支持外网访问,这让人有点头疼,本地开发没有对应的环境,不好调试,写好代码封装好发布到服务器,在进行前期测试太麻烦了 ...
- 【Servlet与JSP】请求转发与重定向
假设一个登录系统,要求用户输入用户名和密码: 用户在上面表单当中输入了信息之后,点击登录按钮(type="submit")将表单作为请求参数进行提交. 这一提交就有两种形式:get ...
- ASP模拟POST请求异步提交数据的方法
这篇文章主要介绍了ASP模拟POST请求异步提交数据的方法,本文使用MSXML2.SERVERXMLHTTP.3.0实现POST请求,需要的朋友可以参考下 有时需要获取远程网站的某些信息,而服务器又限 ...
- 用 IIS 实现请求转发
最近部门要开发一个简单的APP,部分数据是现有项目已经存在的,为了方便维护,希望只提供一个交互的入口,并且协议的规则不变. 基于这个需求,有两套解决方案: 1.用代码将现有的api封装一层,对请求数据 ...
- Java Web中请求转发和请求包含
1.都是在一个请求中跨越多个Servlet 2.多个Servlet在一个请求中,他们共享request对象.就是在AServle中setAttribute()保存数据在BServlet中由getAtt ...
- nginx实现请求转发
反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...
- spring mvc 请求转发和重定向(转)
spring mvc controller间跳转 重定向 传参 url:http://zghbwjl.blog.163.com/blog/static/12033667220137795252845/ ...
- SpringMVC源码剖析(四)- DispatcherServlet请求转发的实现
SpringMVC完成初始化流程之后,就进入Servlet标准生命周期的第二个阶段,即“service”阶段.在“service”阶段中,每一次Http请求到来,容器都会启动一个请求线程,通过serv ...
- 微信内嵌浏览器sessionid丢失问题,nginx ip_hash将所有请求转发到一台机器
现象微信中打开网页,图形验证码填写后,经常提示错误,即使填写正确也会提示错误,并且是间歇性出现. 系统前期,用户使用主要集中在pc浏览器中,一直没有出现这样的问题.近期有部分用户是在微信中访问的,才出 ...
随机推荐
- BPM业务流程管理系统_K2受邀出席QAD客户日活动,赋能企业云端智造_工作流引擎
10月17日,K2受邀参加由厦门易维主办的以“走进QAD云ERP,深耕智能制造”为主题的QAD客户日活动.本次大会是以工业4.0背景下传统制造业面临巨大压力和挑战为导向,旨在探讨如何助力企业迅速适应业 ...
- linux----centos7 yum安装lnmp+zabbix
安装yum utils工具包,若不安装则会找不到命令yum-config-manageryum -y install yum-utils 启用yum仓库yum-config-manager --ena ...
- 数组中的filter,every,some,find,findIndex
这些都是es5中数组新增的方法,一旦用到还是觉得挺实用的 var arr = [0,12,4,6,8]; var res = arr.filter(function(item,index,Arr){ ...
- LearnOpenGL学习笔记(一)画个三角形
开始学习OpenGL,参考的是著名的LearnOpenGL这个网站,在这里做一些总结性的记录,只是方便自己日后查找或者记录自己的一些拓展思考,关于OpenGL的具体内容请移步: https://lea ...
- SignalR 初体验
目录 一.前言 二.服务端 2.1.站点服务端 2.2.宿主服务或客户端 2.3.持久连接和集线器 三.客户端 3.1.使用代理客户端 3.2.不使用代理客户端 一.前言 微软官方给的说明:ASP.N ...
- 大数据之路week06--day07(Linux中的mysql的离线安装)
这里我提供 服务端和客户端的两个jar包的百度云,也是我使用的 链接:https://pan.baidu.com/s/11a3LT-ENZ8n9IF19-VjmWA 提取码:bdls 离线安装Mysq ...
- NodeJS开发博客(三) 数据的保存
什么是cookie 存储在浏览器的一段字符串(最大5k) 跨域不共享 格式如 k1=v1 k2=v2 因此可以存储结构化数据 每次发送http请求,会将请求域的cookie一起发送给server se ...
- vue2 自定义键盘事件
- dede织梦调用顶级二级栏目及下三级栏目方法(数据库实现)
上次有说道能调用织梦的二级栏目今天来说道说道调用三级,乃至无限极 ①:通过dede调用二级栏目大家都会调用,但要调用三级栏目,就有点麻烦了,如下样式的三级栏目dede如何调用呢?如下: ------- ...
- HDU-2082-找单词(母函数)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=2082 题意: 假设有x1个字母A, x2个字母B,..... x26个字母Z,同时假设字母A的价值为1, ...