最近作一個雙11活動的,是一套相關的H5頁面。原本覺得難度不大,可是作下來幾天仍是遇到些問題。就總結一下吧,仍是有收穫的。javascript
1.在H5頁面中,有一個遮罩層,仍是挺有意思的。直接用div+css控制遮罩層頁面。css
<!DOCTYPE html > <head> <title>DIV CSS遮罩層</title> <script language="javascript" type="text/javascript"> function showdiv() { document.getElementById("bg").style.display ="block"; document.getElementById("show").style.display ="block"; } function hidediv() { document.getElementById("bg").style.display ='none'; document.getElementById("show").style.display ='none'; } </script> <style type="text/css"> #bg{ display: none; position: absolute; top: 0%; left: 0%; width: 100%; height: 100%; background-color: black; z-index:1001; -moz-opacity: 0.7; opacity:.70; filter: alpha(opacity=70);} #show{display: none; position: absolute; top: 25%; left: 22%; width: 53%; height: 49%; padding: 8px; border: 8px solid #E8E9F7; background-color: white; z-index:1002; overflow: auto;} </style> </head> <body> <input id="btnshow" type="button" value="Show" onclick="showdiv();"/> <div id="bg"></div> <div id="show">測試 <input id="btnclose" type="button" value="Close" onclick="hidediv();"/> </div> </body> </html>
log4.Net在這三種不一樣的.net程序中添加使用,仍是不同的,不瞭解的話,死活就是出不來日誌文件。html
下面是三種不一樣程序配置log4.Net的方式,注意,Winform和MVC,ashx的方式不一樣,也不能混用。前端
2.log4.net 在Winform、MVC、ashx程序裏的使用 java
①在Winform中添加log.net的dll的引用。web
②在App.config中進行log4.net的相關配置。ajax
③在AssemblyInfo.cs中添加[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]json
app.config文件session
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net-net-1.0"/> </configSections> <log4net> <root> <level value="ALL"/> <appender-ref ref="LogFileAppender"/> </root> <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> <param name="File" value="my_log-file.txt"/> <param name="AppendToFile" value="true"/> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] <%X{auth}>%n - %m%n"/> </layout> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration>
3.log4.net 在Winform、MVC、ashx程序裏的使用mvc
①在Mvc程序中添加log.net的dll的引用。
②在Web.config中進行log4.net的相關配置。
③在Global.asax中添加 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("Web.config")));
4.log4.net 在Winform、MVC、ashx程序裏的使用
ashx這種類型的程序,能夠當作mvc程序,他們都是web程序,能發佈到IIS上,因此能夠把ashx程序在按mvc程序來對待。
①在ashx程序中添加log.net的dll的引用。
②在Web.config中進行log4.net的相關配置。
③由於默認的ashx程序裏沒有Global.asax文件,因此要先添加一個Global.asax文件。
④在Global.asax中添加 log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(Server.MapPath("Web.config")));
5.ashx程序裏使用異步
程序裏用到了發短信的功能,發短信的代碼是寫成異步的,即async和await這種關鍵字。
前端調用代碼:
$.ajax({ type: 'POST', url: 'Reg.ashx', data: postDataReg, dataType: 'json', success: function (data) { $("#shadow").removeClass("shadow"); if (data.status == "0") { $("#regsuccess").css('display', 'block'); $("#regbgein").css('display', 'none'); } else { alert(data.msg); } clickflag = true; } });
Reg.ashx代碼:
public class GetUserInfoAsync : IHttpHandler { public async void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; var name = await GetUserAsync(); context.Response.Write(name); } }
前臺是用ajax異步去調用通常處理程序的,本覺得這樣能夠,可是報錯。
解決方法:利用HttpTaskAsyncHandler這個接口,替換掉IHttpHandler接口,複寫ProcessRequestAsync方法,以後就能正常訪問。
/// <summary> /// GetUserInfoAsync 的摘要說明 /// </summary> public class GetUserInfoAsync : HttpTaskAsyncHandler { private async Task<string> GetUserAsync() { return await Task.Run(() => { return "異步handler"; }); }public override async Task ProcessRequestAsync(HttpContext context) { context.Response.ContentType = "text/plain"; var name = await GetUserAsync(); context.Response.Write(name); } }
6.ashx程序裏使用Session
ashx程序不能直接使用Session,要想使用,必須繼承接口System.Web.SessionState.IRequiresSessionState,以後便能正常使用。
public class Handler1 : IHttpHandler, System.Web.SessionState.IRequiresSessionState { public void ProcessRequest(HttpContext context) { string code = "codeModel"; context.Session["codemodel"] = code; //設置session context.Session.Timeout = 5; //設置session有效期5分鐘 var codeModel = context.Session["codemodel"]; //獲取session } public bool IsReusable { get { return false; } } }
參考:
1.在C#代碼中應用Log4Net(一)簡單使用Log4Net