{
/// <summary>
/// 功能说明:API处理工具。
/// </summary>
public class MyController : ControllerBase
{
private static object initlock = new object();
/// <summary>
/// Jsonp格式化工具。
/// </summary>
/// <typeparam name="T">返回类型。</typeparam>
/// <param name="returnObj">返回值。</param>
/// <returns>处理后的数据。</returns>
[NonAction]
protected IActionResult FormatJsonP<T>(T returnObj)
{
var returnMsg = JsonConvert.SerializeObject(returnObj);
var callback = GetRequestString("callback");
if (HttpContext.Request.Method != "GET" || string.IsNullOrEmpty(callback))
return new JsonResult(returnObj);
if (!string.IsNullOrEmpty(callback))
{
returnMsg = $"{callback}({returnMsg})";
}
return Content(returnMsg, "text/plain");
}
/// <summary>
/// 获取String类型的值。
/// </summary>
/// <param name="name">参数名。</param>
/// <returns>参数值。</returns>
[NonAction]
protected string GetRequestString(string name)
{
try
{
if (HttpContext.Request.HasFormContentType && HttpContext.Request.Form.ContainsKey(name))
return HttpContext.Request.Form[name];
return HttpContext.Request.Query[name];
}
catch (Exception ex)
{
LogWriter.WriteError("EMController.GetRequestString", string.Empty, ex);
}
return string.Empty;
}
/// <summary>
/// 获取Stream流中字符。
/// </summary>
/// <returns>值。</returns>
[NonAction]
protected string GetRequestBody()
{
try
{
using (StreamReader stream = new StreamReader(HttpContext.Request.Body))
{
string body = stream.ReadToEndAsync().GetAwaiter().GetResult();
return body;
}
}
catch (Exception ex)
{
LogWriter.WriteError("EMController.GetRequestBody", string.Empty, ex);
}
return string.Empty;
}
/// <summary>
/// 获取cookie 的名称
/// </summary>
/// <param name="cookieName">cooke键。</param>
/// <returns>值。</returns>
[NonAction]
protected string GetRequestCookie(string cookieName)
{
if (HttpContext.Request.Cookies[cookieName] != null)
{
return HttpContext.Request.Cookies[cookieName];
}
return string.Empty;
}
/// <summary>
/// 获取请求IP。
/// </summary>
/// <returns>请求IP。</returns>
[NonAction]
protected string GetRequestIP()
{
if (HttpContext.Request != null)
{
if (HttpContext.GetServerVariable("HTTP_VIA") == null)//未使用代理
{
return HttpContext.Connection.RemoteIpAddress.ToString();
}
else//使用代理服务器
{
return HttpContext.GetServerVariable("HTTP_X_FORWARDED_FOR");
}
}
return string.Empty;
}
}
}