ashx程序里采纳异步88bifa必发唯一官网,ashx程序里的应用

日志作为连忙稳固程序难题的重大招数,日志差不离是颇具程序都必须具有的1局地,上边大家就看下怎么使用log四net.dll文件:

88bifa必发唯一官网,Log四.Net 在Winfrom、MVC、ashx程序里的选拔,ashx程序里采纳异步

 

  如今做3个双11移动的,是1套相关的H伍页面。本来感到难度一点都不大,可是做下去几天或许碰着些难点。就计算一下啊,依旧有获得的。

一.在H5页面中,有1个遮罩层,照旧挺有趣的。间接用div+css调节遮罩层页面。

 

88bifa必发唯一官网 188bifa必发唯一官网 2

<!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>

View Code

 

log4.Net在那二种分歧的.net程序中增加应用,仍旧分裂等的,不领悟的话,死活就是出不来日志文件。

上边是三种差别程序配置log4.Net的主意,注意,Winfrom和MVC,ashx的秘技各异,也不可能混用。

二.log4.net
在Winfrom、MVC、ashx程序里的行使 

 
①在Winfrom中添加log.net的dll的引用。

 
贰在App.config中开展log四.net的有关配置。

  ③在AssemblyInfo.cs中添加[assembly:
log4net.Config.XmlConfigurator(ConfigFileExtension = “config”, Watch =
true)]

88bifa必发唯一官网 388bifa必发唯一官网 4

 app.config文件

88bifa必发唯一官网 588bifa必发唯一官网 6

<?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] &lt;%X{auth}&gt;%n - %m%n"/>
      </layout>
    </appender>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

View Code

 

三.log④.net
在Winfrom、MVC、ashx程序里的施用

 1在Mvc程序中增添log.net的dll的引用。

    贰在Web.config中实行log四.net的相关计划。

 
  ③在Global.asax中添加  log4net.Config.XmlConfigurator.ConfigureAndWatch(new
System.IO.FileInfo(Server.MapPath(“Web.config”)));

 

  88bifa必发唯一官网 788bifa必发唯一官网 8

 

 四.log肆.net
在Winfrom、MVC、ashx程序里的施用

 
 ashx那体系型的先后,可以当做mvc程序,他们都以web程序,能发布到IIS上,所以能够把ashx程序在按mvc程序来比较。

     1在ashx程序中增添log.net的dll的引用。

     贰在Web.config中进行log四.net的相关安插。

 
三因为暗许的ashx程序里未有Global.asax文件,所以要先加多2个Global.asax文件。

   
 ④在Global.asax中添加  log4net.Config.XmlConfigurator.ConfigureAndWatch(new
System.IO.FileInfo(Server.MapPath(“Web.config”)));

 

  88bifa必发唯一官网 9

88bifa必发唯一官网 10

 

5.ashx先后里使用异步

  程序里用到了发短信的功用,发短信的代码是写成异步的,即async和await那种根本字。

前者调用代码:

88bifa必发唯一官网 11😉

    $.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;

                } 
            });

88bifa必发唯一官网 12😉

Reg.ashx代码:

88bifa必发唯一官网 13😉

public class GetUserInfoAsync : IHttpHandler
{
        public async void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            var name = await GetUserAsync();
            context.Response.Write(name);
        }
}

88bifa必发唯一官网 14😉

前台是用ajax异步去调用一般管理程序的,本认为那样可以,不过报错。

88bifa必发唯一官网 15

88bifa必发唯一官网 16

缓慢解决方式:利用HttpTaskAsyncHandler这几个接口,替换掉IHttpHandler接口,复写ProcessRequestAsync方法,之后就会健康访问。

88bifa必发唯一官网 17😉

    /// <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);
        }
    }

88bifa必发唯一官网 18😉

 

 

 

 陆.ashx程序里选取Session

     ashx程序无法直接选拔Session,要想选拔,必须继续接口System.Web.SessionState.IRequiresSessionState,之后便能健康使用。

88bifa必发唯一官网 19😉

  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;
            }
        }
    }

88bifa必发唯一官网 20😉

 

参考:

  1.在C#代码中动用Log4Net(一)简单利用Log四Net

  贰.asp.net
Web项目中应用Log4Net实行不当日志记录

  3.await和async在相似管理程序中的使用

  4.ashx貌似管理程序中的Session读写标题

  
 五.JS+CSS简单落成DIV遮罩层呈现隐藏

转载自:

 

1.下载log4net.dll文件

  近期做1个双1壹运动的,是1套相关的H伍页面。本来以为难度比极小,不过做下去几天也许境遇些难题。就计算一下啊,还是有得到的。

二.创建筑协会调的类型

1.在H五页面中,有一个遮罩层,还是挺有意思的。直接用div+css调整遮罩层页面。

三.在大团结项目下的引用log肆net.dll文件

 

4.在app.config配置文件里丰盛配置新闻,上边贴出配置音信,大家平昔复制到app.config文件下就能够了

88bifa必发唯一官网 2188bifa必发唯一官网 22

贴的代码

<!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>

88bifa必发唯一官网 2388bifa必发唯一官网 24

View Code

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <!-- 日志文件配置-->
    <root>
      <level value="ALL"/>
      <!--按文件存储日志-->
      <appender-ref ref="DebugAppender"/>
      <appender-ref ref="InfoAppender"/>
      <appender-ref ref="ErrorAppender" />
    </root>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Error\\" />
      <!--日志记录的存在路-->
      <param name="AppendToFile" value="true" />
      <!--为true就表示日志会附加到文件,为false,则会重新创建一个新文件-->
      <param name="MaxSizeRollBackups" value="30" />
      <!--创建最大文件数-->
      <!--<param name="MaxFileSize" value="10240" />-->
      <!--文件大小-->
      <param name="StaticLogFileName" value="false" />
      <!--是否指定文件名-->
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <!--文件格式-->
      <param name="RollingStyle" value="Date" />
      <!--创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite-->
      <layout type="log4net.Layout.PatternLayout">
        <!--输出内容布局-->
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        <!--method会影响性能-->
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="30" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Debug\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="30" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      </filter>
    </appender>
  </log4net>

 

View Code

log四.Net在那两种分裂的.net程序中拉长应用,依旧不等同的,不打听的话,死活正是出不来日志文件。

app.config全数代码

下边是两种差别程序配置log4.Net的格局,注意,Winform和MVC,ashx的方法分裂,也无法混用。

88bifa必发唯一官网 2588bifa必发唯一官网 26

贰.log4.net
在Winform、MVC、ashx程序里的选取 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="SunCreate.CombatPlatform.Client.NamePipe.PipeServerProcess.set" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/>
    </sectionGroup>
  </configSections>
  <log4net>
    <!-- 日志文件配置-->
    <root>
      <level value="ALL"/>
      <!--按文件存储日志-->
      <appender-ref ref="DebugAppender"/>
      <appender-ref ref="InfoAppender"/>
      <appender-ref ref="ErrorAppender" />
    </root>
    <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Error\\" />
      <!--日志记录的存在路-->
      <param name="AppendToFile" value="true" />
      <!--为true就表示日志会附加到文件,为false,则会重新创建一个新文件-->
      <param name="MaxSizeRollBackups" value="30" />
      <!--创建最大文件数-->
      <!--<param name="MaxFileSize" value="10240" />-->
      <!--文件大小-->
      <param name="StaticLogFileName" value="false" />
      <!--是否指定文件名-->
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;"/>
      <!--文件格式-->
      <param name="RollingStyle" value="Date" />
      <!--创建新文件的方式,可选为Size(按文件大小),Date(按日期),Once(每启动一次创建一个文件),Composite(按日期及文件大小),默认为Composite-->
      <layout type="log4net.Layout.PatternLayout">
        <!--输出内容布局-->
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        <!--method会影响性能-->
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
    <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Info\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="30" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>
    <appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
      <param name="File" value=".\\Logs\\Debug\\" />
      <param name="AppendToFile" value="true" />
      <param name="MaxSizeRollBackups" value="30" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyy-MM-dd&quot;.log&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      </filter>
    </appender>
  </log4net>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

 
①在Winform中添加log.net的dll的引用。

View Code

 
2在App.config中开始展览log四.net的有关配置。

5.在AssemblyInfo.cs文件下增加一句配置消息:[assembly:
log4net.Config.XmlConfigurator(Watch = true)],如下图

  ③在AssemblyInfo.cs中添加[assembly:
log4net.Config.XmlConfigurator(ConfigFileExtension = “config”, Watch =
true)]

88bifa必发唯一官网 27

88bifa必发唯一官网 388bifa必发唯一官网 4

6.在急需打日志的文件里引用using
log④net,然后加多Ilog变量就足以应用日志功用,如下图:

 app.config文件

 88bifa必发唯一官网 30

88bifa必发唯一官网 3188bifa必发唯一官网 32

 

<?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] &lt;%X{auth}&gt;%n - %m%n"/>
      </layout>
    </appender>
  </log4net>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

下边是打出的日志文件:

View Code

88bifa必发唯一官网 33

 

 

叁.log四.net
在Winform、MVC、ashx程序里的选取

 至此log肆net.dll文件作者想你早已都会用了,希望对您有扶持。

 壹在Mvc程序中加多log.net的dll的引用。

最后最后最终,主要的事情说2次,来着是客,如若你认为好就引进或评头品足下,感觉不好愿意能赢得你的提出,继续改良.88bifa必发唯一官网 3488bifa必发唯一官网 35

    贰在Web.config中进行log四.net的有关配置。

 

 
  ③在Global.asax中添加  log4net.Config.XmlConfigurator.ConfigureAndWatch(new
System.IO.FileInfo(Server.MapPath(“Web.config”)));

 

  88bifa必发唯一官网 788bifa必发唯一官网 8

 

 4.log肆.net
在Winform、MVC、ashx程序里的选用

 
 ashx那体系型的先后,能够用作mvc程序,他们都以web程序,能揭穿到IIS上,所以能够把ashx程序在按mvc程序来比较。

     一在ashx程序中加多log.net的dll的引用。

     2在Web.config中实行log4.net的相干计划。

 
三因为暗中同意的ashx程序里不曾Global.asax文件,所以要先增添2个Global.asax文件。

   
 ④在Global.asax中添加  log4net.Config.XmlConfigurator.ConfigureAndWatch(new
System.IO.FileInfo(Server.MapPath(“Web.config”)));

 

  88bifa必发唯一官网 9

88bifa必发唯一官网 10

 

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异步去调用一般管理程序的,本认为那样能够,可是报错。

88bifa必发唯一官网 15

88bifa必发唯一官网 16

赶尽杀绝办法:利用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);
        }
    }

 

 

 

 陆.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#代码中运用Log四Net(一)简单利用Log四Net

  二.asp.net
Web项目中采用Log4Net举行不当日志记录

  三.await和async在相似管理程序中的使用

  四.ashx相似管理程序中的Session读写标题

  
 伍.JS+CSS简单贯彻DIV遮罩层显示隐藏