302重定向,MVC中的Get,Post请求。
1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化。。。
2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端IP则是处理页的IP。
3.获取客户端IP的代码
public string GetClientIP()
{
HttpContext current = HttpContext.Current;
string userHostAddress = string.Empty;
if (current != null)
{
if ((current.Session != null) && (current.Session["cnki_sys_user_remote_addr"] != null))
{
userHostAddress = current.Session["cnki_sys_user_remote_addr"].ToString();
if (!string.IsNullOrEmpty(userHostAddress))
{
return userHostAddress;
}
}
userHostAddress = "127.0.0.1";
userHostAddress = current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(userHostAddress))
{
userHostAddress = current.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(userHostAddress))
{
userHostAddress = current.Request.UserHostAddress;
}
}
else
{
string[] strArray = userHostAddress.Split(new char[] { ',' });
if ((strArray.Length > ) && !string.IsNullOrEmpty(strArray[strArray.Length - ]))
{
userHostAddress = strArray[strArray.Length - ];
}
}
if (current.Session != null)
{
current.Session["cnki_sys_user_remote_addr"] = userHostAddress;
}
}
return userHostAddress;
}
4.向mvcapi中发出的Post和Get请求,以及返回信息的接收和处理代码。
public class ECPManage
{
public Result GetResultFromConfig(string config, params string[] para)//config是mvcapi的处理路径,para是参数。
{
string getUidUrl = string.Format(ConfigurationManager.AppSettings[config], para);
string retJSON = SendGet(getUidUrl).TrimStart("?(".ToCharArray()).TrimEnd(')');
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(retJSON)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Result));
Result t = (Result)serializer.ReadObject(ms);
return t;
}
}
/// <summary>
/// 发送post请求,返回信息
/// </summary>
/// <param name="uri"></param>
/// <param name="data"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public string SendPost(string uri, string data, string encoding = "utf8")
{
using (WebClient wCient = new WebClient())
{
if ("utf8" == encoding)
{
wCient.Encoding = Encoding.UTF8;
}
else
{
wCient.Encoding = Encoding.Default;
}
return wCient.UploadString(uri, data);
}
}
/// <summary>
/// 发送get请求,返回信息
/// </summary>
/// <param name="uri"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public string SendGet(string uri, string encoding = "utf8")
{
using (WebClient wCient = new WebClient())
{
if ("utf8" == encoding)
{
wCient.Encoding = Encoding.UTF8;
}
else
{
wCient.Encoding = Encoding.Default;
}
return wCient.DownloadString(uri);
}
}
}

302重定向,MVC中的Get,Post请求。的更多相关文章
- asp.net MVC中防止跨站请求攻击(CSRF)的ajax用法
参考: Preventing Cross-Site Request Forgery (CSRF) AttacksValidating .NET MVC 4 anti forgery tokens in ...
- ASP.NET MVC中防止跨站请求攻击(CSRF)
转载 http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...
- Spring MVC中如何解决POST请求中文乱码问题,GET的又如何处理呢
在web.xml中配置过滤器 GET请求乱码解决: 在Tomcat中service.xml中
- 【Spring MVC】spring mvc中相同的url请求返回不同的结果
在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...
- MVC中如何避免POST请求中出现的重复提交
使用惯了Asp.Net的服务器控件了, 突然转到MVC框架上来遇到这么个问题. 比如说网速慢的时候, 用户频繁的点击提交按钮, 或者是按F5刷新页面等等.解决方法很简单. 解决方案 1. 在页面生成时 ...
- 如何在.Net Mvc中让Get,Post请求访问同一个Action的方法
[HttpPost] [ActionName("Index")] public ActionResult Post(Models.WeChatRequestModel model) ...
- Asp.net MVC中Route的理解
在Asp.net MVC中,对于一个请求,是通过路由找到对应的Controller类中的对应Action,并与model进行交互,最后返回到view. 就是说Asp.net MVC是用Route来定义 ...
- ASP.NET MVC中使用Ninject
ASP.NET MVC中使用Ninject 在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事 ...
- Asp.net MVC 中使用 Ninject 实现依赖注入
松耦合.针对抽象编程.不针对实现编程是面向对象设计的原则.依赖注入就是,在一个类的内部,不通过创建对象的实例而能够获得实现了某个公开接口的对象引用.所谓的控制反转也是相同的意思.把依赖的创建转移到了使 ...
- Chrome在302重定向的时候对原请求产生2次请求的问题说明
这个问题应该确确实实是一个Chrome的BUG,我在自己的编程环境中发现,并在多个服务器,多个编程语言的运行环境,以及多个浏览器下都测试过,都看到有2次请求出现.为了证明不是自己环境的问题,我也特意去 ...
随机推荐
- jmeter参数化数据(_csvread函数、用户自定义变量等)
以下是转载内容,仔细看过后,觉得用得最多的应该是csvread函数.用户自定义变量以及CSV DATA CONFIG控制器这几个,但是做练习之后,在结果树和聚合报告中怎么查看执行结果是个问题,没找到对 ...
- Excel文件上传
*&---------------------------------------------------------------------* *& FORM FRM_UPDATA_ ...
- 怎样克服 JavaScript 框架疲劳?
[编者按]Tero Parviainen 著有 Build Your Own AngularJS,曾两次组织 Clojure CUP 竞赛,在 Twitter 上有近两千名关注者. 在本文中.Tero ...
- c# 请问如何将四个RadioButton分成两组?
WinForm 只要放在同一个容器中的RadioButton 就自动互斥 创建两个panel容器,分别放两个RadioButton 就是两组了
- 在内核外编写的linux驱动程序MAKEFILE
一般都是这么写: ifneq ($(KERNELRELEASE),) obj-m := else KERNELDIR ?= /lib/modules/$(shell uname -r)/build ...
- 【转】iOS应用崩溃日志揭秘
这篇文章还可以在这里找到 英语 If you're new here, you may want to subscribe to my RSS feed or follow me on Twitter ...
- JDK1.5中线程池,定时器知识
package cn.it.pool; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executo ...
- Oracle 根据业务创建新的用户
新的需求,创建一个用户,可以查询基表的数据,但是不能修改,同时自己也可以创建对象 1.创建用户第一种方式 详细常见,前提 表空间和临时表空间必须存在 格式: create user 用户名 ident ...
- wget下载网站整个目录
wget -r -p -np -k -P ./data/ http://example.com/eg/ 具体参数: -P 表示下载到哪个目录 -r 表示递归下载 -np 表示不下载旁站连接 -k 表示 ...
- linux下安装redis并自启动
最近需要使用redis作为tomcat集群的session存储介质,因此记录redis的安装步骤.redis是一款高性能的nosql,支持异步将缓存写入到磁盘中,避免宕机的意外情况导致的缓存信息丢失. ...