个人笔记,记录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. Android Java中的一些使用例子

    connectivity= ConnectivityService.getInstance(context); ServiceManager.addService(Context.CONNECTIVI ...

  2. 【第一篇】SAP ABAP7.5x新语法之预定义数据结构

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之预定义数据结构 前 ...

  3. 安全之路 —— 无DLL文件实现远程线程注入

    简介         在之前的章节中,笔者曾介绍过有关于远程线程注入的知识,将后门.dll文件注入explorer.exe中实现绕过防火墙反弹后门.但一个.exe文件总要在注入时捎上一个.dll文件着 ...

  4. 如何创建一个 mongo 数据库并为它添加一个认证用户?

    0.登录 admin 库,开启一个 mongo shell mongo --port 27017 -u "adminUser" -p "adminPass" - ...

  5. MySQL基本简单操作01

    MySQL基本简单操作 学会了安装Docker,那么就将它利用起来.(/滑稽脸) 之前想学习Mysql(Windows下配置真麻烦),学会了Docker就方便了,直接使用Docker创建一个Mysql ...

  6. java 实现Word或Excel 转Pdf

    1:首先需要引入相关的jar word转pdf需要引入 aspose-words-15.8.0-jdk16.jar 下载JAR包 Word http://note.youdao.com/notesha ...

  7. 控件_SeekBar与RatingBar

    这两种进度条都是ProgressBar的子类 SeekBar:是一种可以拖动的进度条,比如播放音乐的进度 import android.app.Activity; import android.os. ...

  8. (10)Python函数

  9. 什么是CPU密集型、IO密集型?

    CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...

  10. NDK/JNI学习--环境搭建

    基于Windows来开发Android的NDK.JNI须要的环境搭建,所须要的软件例如以下: Android 开发环境的基本配置(SDk,ADT.Eclipse IDE.JDK)       这些都是 ...