[Log]ASP.NET之HttpModule 事件执行顺序
ASP.Net下的HttpModule是基于事件的处理模型,这使得我们在选择事件监听和处理的时候有更多选择。下面是对HttpModule有关事件被触发的监测:
有关代码如下
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.SessionState;
using System.Threading; /// ///EventTest 的摘要说明
///
public class EventTest : IHttpModule, IRequiresSessionState
{
public EventTest()
{
//
//TODO: 在此处添加构造函数逻辑
//
} void IHttpModule.Dispose()
{
return;
} void IHttpModule.Init(HttpApplication App)
{
App.AcquireRequestState += new EventHandler(AcquireRequestState);
App.BeginRequest += new EventHandler(BeginRequest);
App.AuthenticateRequest += new EventHandler(AuthenticateRequest);
App.AuthorizeRequest += new EventHandler(AuthorizeRequest);
App.Disposed += new EventHandler(Disposed);
App.EndRequest += new EventHandler(EndRequest);
App.Error += new EventHandler(Error);
//App.MapRequestHandler += new EventHandler(MapRequestHandler);
App.PostAcquireRequestState += new EventHandler(PostAcquireRequestState);
App.PostAuthenticateRequest += new EventHandler(PostAuthenticateRequest);
App.PostAuthorizeRequest += new EventHandler(PostAuthorizeRequest);
//App.PostLogRequest += new EventHandler(PostLogRequest);
App.PostMapRequestHandler += new EventHandler(PostMapRequestHandler);
App.PostReleaseRequestState += new EventHandler(PostReleaseRequestState);
App.PostRequestHandlerExecute += new EventHandler(PostRequestHandlerExecute);
App.PostResolveRequestCache += new EventHandler(PostResolveRequestCache);
App.PostUpdateRequestCache += new EventHandler(PostUpdateRequestCache);
App.PreRequestHandlerExecute += new EventHandler(PreRequestHandlerExecute);
App.PreSendRequestHeaders += new EventHandler(PreSendRequestHeaders);
App.PreSendRequestContent += new EventHandler(PreSendRequestContent);
App.ReleaseRequestState += new EventHandler(ReleaseRequestState);
App.ResolveRequestCache += new EventHandler(ResolveRequestCache);
App.UpdateRequestCache += new EventHandler(UpdateRequestCache);
} private void BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)");
} private void AcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AcquireRequestState(与当前建立会话时发生)");
if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void AuthenticateRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)"); } private void AuthorizeRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)"); } private void Disposed(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:Disposed(释放应用时发生)"); } private void EndRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)"); } private void Error(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + Error(Error事件时发生)");
} private void PostAcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生)");
if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void PostAuthenticateRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)");
} private void PostAuthorizeRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)");
} private void PostMapRequestHandler(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)"); } private void PostReleaseRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)");
} private void PostRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)");
} private void PostResolveRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)");
} private void PostUpdateRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)"); } private void PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生)"); if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void PreSendRequestContent(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
//response.Write("
" + time + " + IHttpModule:PreSendRequestContent(向客户端发送内容之前发生)"); } private void PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)");
} private void ReleaseRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)");
} private void ResolveRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)");
}
private void UpdateRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)");
} }
需要在web.Config加入
<httpModules>
<add name="Haha" type="EventTest"/>
<httpModules>
任意Page的代码(aspx)
protected void Page_Load(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_Load");
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:TextBox1_TextChanged");
Label1.Text = TextBox1.Text;
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:TextBox2_TextChanged");
Label2.Text = TextBox2.Text;
} private void Page_LoadComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_LoadComplete");
} private void Page_Unload(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
//Response.Write("
" + time + " + Page_Unload");
} private void Page_PreInit(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreInit");
} private void Page_Init(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Session["T"] = "来自Page级:Page_Init" + time;
Response.Write("
" + time + " + Page:Page_Init");
} private void Page_InitComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_InitComplete");
} private void Page_PreLoad(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreLoad");
} private void Page_PreRender(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreRender");
} private void Page_PreRenderComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreRenderComplete");
} private void Page_SaveStateComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_SaveStateComplete");
}
当Page(aspx)页面事件被加载(首次)被加载后的信息
-- ::: + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)
-- ::: + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)
-- ::: + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)
-- ::: + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)
-- ::: + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)
-- ::: + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)
-- ::: + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)
-- ::: + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)
-- ::: + IHttpModule:AcquireRequestState(与当前建立会话时发生) Session未收到!
-- ::: + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生) Session未收到!
-- ::: + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生) Session未收到!
-- ::: + Page:Page_PreInit
-- ::: + Page:Page_Init
-- ::: + Page:Page_InitComplete
-- ::: + Page:Page_PreLoad
-- ::: + Page:Page_Load
-- ::: + Page:Page_LoadComplete
-- ::: + Page:Page_PreRender
-- ::: + Page:Page_PreRenderComplete
-- ::: + Page:Page_SaveStateComplete
Label1(aspx页面的)
Label2(aspx页面的)
-- ::: + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)
-- ::: + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)
-- ::: + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)
-- ::: + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)
-- ::: + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)
-- ::: + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)
-- ::: + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)
注意,想使用Session时,必须在AcquireRequestState,PostAcquireRequestState以及PreRequestHandlerExecute事件中.
页面事件被触发
-- ::: + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)
-- ::: + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)
-- ::: + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)
-- ::: + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)
-- ::: + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)
-- ::: + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)
-- ::: + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)
-- ::: + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)
-- ::: + IHttpModule:AcquireRequestState(与当前建立会话时发生) + 来自Page级:Page_Init2009-- :::
-- ::: + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生) + 来自Page级:Page_Init2009-- :::
-- ::: + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生) + 来自Page级:Page_Init2009-- :::
-- ::: + Page:Page_PreInit
-- ::: + Page:Page_Init
-- ::: + Page:Page_InitComplete
-- ::: + Page:Page_PreLoad
-- ::: + Page:Page_Load
-- ::: + Page:TextBox1_TextChanged
-- ::: + Page:Page_LoadComplete
-- ::: + Page:Page_PreRender
-- ::: + Page:Page_PreRenderComplete
-- ::: + Page:Page_SaveStateComplete
aspx 页面信息
-- ::: + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)
-- ::: + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)
-- ::: + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)
-- ::: + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)
-- ::: + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)
-- ::: + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)
-- ::: + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)
以下为摘录,用于加深事件模型的理解
Page 执行中将按照如下顺序激活事件: Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete 如果页面从令一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是: UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete 如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活: ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete 更进一步,如果ContentPage继承BasePage,那么,各事件的执行顺序将变成: UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete
| MasterPage | UserControlOnTop | Page | UserControlInPage | UserControlOnButtom |
| Init | ||||
| Init | ||||
| Init | ||||
| Init | ||||
| Init | ||||
| Load | ||||
| Load | ||||
| Load | ||||
| Lod | ||||
| Load | ||||
| ControlEvents | ControlEvents | ControlEvents | ControlEvents | ControlEvents |
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| PreRender | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad | ||||
| UnLoad |
[Log]ASP.NET之HttpModule 事件执行顺序的更多相关文章
- jquery ajax中各个事件执行顺序如下
$(function(){ setTimeout(function(){ $.ajax({ url:'/php/selectStudent.php', }); },0); $(document).aj ...
- ASP.NET Page对象各事件执行顺序(转)
很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...
- ASP.NET MVC自定义Module记录管道事件执行顺序
1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC. 2. 在项目中新建一个类MyModule,实现IHttpModule接口 namespace SimpleApp.Infr ...
- Web高级 Eventloop和事件执行顺序
1. EventLoop 1.1 调用栈 当一个方法执行时内部调用另外的方法,则会形成调用栈,如图: 1.2 任务队列 JavaScript有一个主线程执行当前任务,主线程的代码同步执行,并把遇到的事 ...
- 关于js事件执行顺序
关于js事件执行顺序小技巧 js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 ...
- 关于js事件执行顺序小技巧
js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 <button ty ...
- jquery ajax 中各个事件执行顺序
jquery ajax 中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事 ...
- Wex5页面事件执行顺序
wex5 事件执行顺序data组件的onCustomRefresh→ model组件的onLoad→ windowReceiver组件的onReceive
- jquery中各个事件执行顺序如下:
jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...
随机推荐
- [转]Python多线程与多线程中join()的用法
https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...
- php解析mpp文件中的多级任务
获取层级的project任务 参考 启动javabridge java -jar JavaBridge.jar SERVLET_LOCAL:8089 1.读取mpp文件 $file_path = & ...
- Python 网络编程相关知识学习
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- 配置nginx.config 报错:connect() failed (111: Connection refused) while connecting to upstream解决
php-fpm没有运行 执行如下命令查看是否启动了php-fpm,如果没有则启动你的php-fpm即可 查看: netstat -ant | grep 9000 执行 /usr/local/php/s ...
- webpack流程图
- JointJS绘制流程图
摘要: JointJS是一个javascript图表库.你可以使用它制作静态或者动态的图表.关系表.流程图. 效果图:
- 如何用一个for循环打印出一个二维数组
思路分析: 二维数组在内存中默认是按照行存储的,比如一个二维数组{{1,2,3,},{4,5,6}},它在内存中存储的顺序就是1.2.3.4.5.6,也就是说,对于这6个数组元素,按照从0到5给它们编 ...
- 【Nodejs】npm cnpm 淘宝镜像
一.通过命令配置 1. 命令 npm config set registry https://registry.npm.taobao.org 2. 验证命令 npm config get regist ...
- Weblogic(CVE-2017-10271)漏洞复现
WebLogic XMLDecoder反序列化漏洞(CVE-2017-10271) 漏洞编号:CVE-2017-10271 漏洞描述:WebLogic WLS组件中存在CVE-2017-10271远程 ...
- Ansible 远程执行命令
写法如下: [root@localhost ~]$ ansible 192.168.119.134 -m command -a 'date' # 对指定的主机远程执行命令,-m 指定使用哪个模块,-a ...