个人笔记,记录Nancy异步用法

基类,所有请求都将首先执行该类,并执行Before事件
namespace CxyAdvert.Base
{
public class BaseNancyModel : Nancy.NancyModule
{
public BaseNancyModel()
{
Get["/"] = param =>
{
return "ADVERT SYSTEM";
};
}
public BaseNancyModel(string path)
: base(path)
{
Before += async (context, token) =>
{
return await VerifyAuth(context);
}; //After += async (context, token) =>
//{
// await VerifyAuth(context);
//};
}      /// <summary>
/// Before执行的函数,返回null将继续执行路由指定接口,返回Response将结束并返回
/// </summary>
/// <param name="nancyContext"></param>
/// <returns></returns>
private async Task<Response> VerifyAuth(Nancy.NancyContext nancyContext)
{
try
{
var httpMethod = nancyContext.Request.Method;
if (httpMethod.ToUpper() == "POST")
{
var requestParms = HttpHelper.GetPostValue(nancyContext.Request.Body);
if (requestParms == "")
{
return Response.AsJson(new ResultMsg() { code = -, errormsg = "参数值不能为空" });
}
else
{ }
}
return null;
}
catch (Exception error)
{
Logger.Error("BaseNancyModel ERROR:" + error);
return Response.AsJson(new ResultMsg() { code = -, errormsg = error.Message });
}
}      public object GetEncryptValue(object msg)
{
var strJson = JsonConvert.SerializeObject(msg, StringFormat.jsonSerializerSettings);
return strJson ;
}
}
}

接口类,所有接口类继承基类BaseNancyModel,GetEncryptValue函数实现于基类BaseNancyModel中
namespace CxyAdvert
{
public class AdvertSericeApi : BaseNancyModel
{
public AdvertSericeApi() :
base("/cxy/api/advert/")
{
IAdvertSerice service = new AdvertSerice(); Post["getshowadverts", true] = async (param, token) =>
{
return GetEncryptValue(await service.GetShowAdverts(BaseInputParam, ThridUser));
}; Post["getadverts", true] = async (param, token) =>
{
return GetEncryptValue(await service.GetAdverts(BaseInputParam, ThridUser));
};
}
}
}


Nancy异步用法的更多相关文章

  1. 进程池的同步与异步用法Pool

    进程池的同步,如下程序: from multiprocessing import Pool import time import os def func(n): print('start 进程 %s' ...

  2. c语言libcurl库的异步用法

    multi接口的使用会比easy 接口稍微复杂点,毕竟multi接口是依赖easy接口的,首先粗略的讲下其使用流程:curl_multi _init初始化一个multi curl对象,为了同时进行多个 ...

  3. curl_multi_*模拟多线程异步用法

    测试环境: PHP版本:php7.0.10 mysql版本:5.7.14 测试用例:循环插入两千行数据到数据库 public function test_syn($pc){ // $pc = trim ...

  4. 选择HttpHandler还是HttpModule?

    阅读目录 开始 理解ASP.NET管线 理解HttpApplication 理解HttpHandler 理解HttpModule 三大对象的总结 案例演示 如何选择? 最近收到几个疑问:HttpHan ...

  5. Asp.Net Core微服务再体验

    ASP.Net Core的基本配置 .在VS中调试的时候有很多修改Web应用运行端口的方法.但是在开发.调试微服务应用的时候可能需要同时在不同端口上开启多个服务器的实例,因此下面主要看看如何通过命令行 ...

  6. (5)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- 熔断降级(Polly)

    一. 什么是熔断降级 熔断就是“保险丝”.当出现某些状况时,切断服务,从而防止应用程序不断地尝试执行可能会失败的操作给系统造成“雪崩”,或者大量的超时等待导致系统卡死. 降级的目的是当某个服务提供者发 ...

  7. (5).NET CORE微服务 Micro-Service ---- 熔断降级(Polly)

    一. 什么是熔断降级 熔断就是“保险丝”.当出现某些状况时,切断服务,从而防止应用程序不断地尝试执行可能会失败的操作给系统造成“雪崩”,或者大量的超时等待导致系统卡死. 降级的目的是当某个服务提供者发 ...

  8. 前端AMD、CMD和commonJs-前端知识

    前端AMD和CMD是在模块化的基础上产生并且得到大幅度的引用的. AMD 即Asynchronous Module Definition(点击链接可以查看AMD面试题),中文名是异步模块定义的意思.它 ...

  9. HttpHandler,HttpApplication, HttpModule

    选择HttpHandler还是HttpModule? HttpHandler和HttpModule之间有什么差别 之所以有这个疑问,是因为在这二类对象中都可以访问Request, Response对象 ...

随机推荐

  1. beta冲刺随笔集

    团队成员 郑西坤 031602542 (队长) 陈俊杰 031602504 陈顺兴 031602505 张胜男 031602540 廖钰萍 031602323 雷光游 031602319 吴志鸿 03 ...

  2. CSS3创建圆圈进度条

    最近在工作中需要做一个圆圈倒计时,刚开始的想法是做个纯数字的倒计时即可,可是需求觉得这个不太好看,想加个倒计时进度条.于是就有了接下来的分析过程... 我们知道CSS3可以很方便的画圆,圆环,然后在加 ...

  3. 查看python版本

    1.未进入python shell python --version 2.进入python shell,有两种方法 (1) help() (2) import sys sys.version

  4. jquery判断checkBox的checked

    jquery判断checked的三种方法:.attr('checked):   //看版本1.6+返回:”checked”或”undefined” ;1.5-返回:true或false.prop('c ...

  5. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  6. Python实例---模拟微信网页登录(day5)

    第六步: 实现发送/接受消息---day5代码 settings.py """ Django settings for weixin project. Generated ...

  7. [Jenkins] 如何修改jenkins上的环境变量

    现象 当本地的环境变量发生变化时,在jenkins 构建时里面访问的环境变量仍是之前旧的(未更新的)导致构建出现错误,比如我以我所遇到的问题进行简单写下,下面例子中我是涉及到修改 PYTHONPATH ...

  8. 浮动、清除浮动、BFC

    一. 浮动 1. 浮动的定义 使元素脱离文档流,按照向左或向右的方向移动,直到它的外边缘碰到包含它的框或另一个浮动框为止. 脱离文档流就是在页面中不占位置了. 左浮动右浮动此处就不再赘述了. 2. 看 ...

  9. ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES)

    windows下,以上两个错误的解决方法 工具/原料   windows 8 MySql 方法/步骤     找到配置文件my.ini  ,然后将其打开,可以选择用记事本打开   打开后,搜索mysq ...

  10. eclipse 自动创建web.xml

    eclipse 自动创建web.xml 以前每次创建web项目的时候,总是从其他的项目中拷贝一个web.xml文件到新项目,然后改吧改吧就可以了,但是这终究是一件麻烦的事,要是能够通过软件自动创建,那 ...