无法识别的配置节log4net的(Unrecognized configuration section log4net) - herizai - 博客园

mikel阅读(1454)

来源: 无法识别的配置节log4net的(Unrecognized configuration section log4net) – herizai – 博客园

每个配置文件中只允许存在一个 <configSections> 元素,并且,如果存在该元素,它还必须是根 <configuration> 元素的第一个子元素。

 

问题:

I have this code in web.config:

复制代码
<log4net>
  <root>
    <level value="ALL" />
    <appender-ref ref="LogFileAppender" />
  </root>
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <param name="File" value="D:\logFileFaculty.txt" />
    <param name="AppendToFile" value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
  </appender>
</log4net>
复制代码

And I have downloaded log4net.dll and placed it in Bin Folder.

In one of My aspx.cs pages I have added this code:

using log4net;
[assembly: log4net.Config.XmlConfigurator(Watch = true)]


private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

But it’s giving error as Unrecognized configuration section log4net.

 

解决方案:

You need to declare the log4net section:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>

Take a closer look at the documentation which explains the necessary things to do.

C# log4net 的配置 - ???笨小孩 - 博客园

mikel阅读(1014)

来源: C# log4net 的配置 – ???笨小孩 – 博客园

项目的日志组件是必备可少的,任何项目中都需要。这样既方便前期的开发测试也方便项目后期的项目维护。C#项目的一个不错的日志组件是log4net,下面我就把网站项目、桌面应用程序项目log4net的如何配置粗略的介绍一下。

网站项目中的配置

首先,你得确保你的电脑是联网的。确保这一点后,我们就是先给项目中安装log4net。安装的方法有很多种,我粗略介绍一下我经常使用的方法:使用Visual Studio 2013(我这里使用的是2013)打开项目,在“解决方案资源管理器”的项目目录中找到“引用”鼠标右键弹出菜单中点击“管理NuGet程序包(N)…”就会弹出一个管理窗口如下图:

图1

如果这样不行的话可以试试“程序包管理器控制台”用命令安装:先要打开控制台,在“工具”“NuGet程序包管理器”“程序包管理器控制台”这样就可以打开程序包管理器控制台。

那么安装命令不会怎么办?这个好办还是像图1的窗口做如下操作:

图2

 

图3

 

图4

这样就把log4net的程序包安装到项目中,接下来就是怎么在项目中配置了。首先讲解网站项目中是怎么配置的。

第一步:在Web.config文件中做如下配置,先上图看一下究竟:

图5

图6

下是图5、图6中的配置文件中的代码:

 

复制代码
 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />




  <log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- Set root logger level to ERROR and its appenders -->
    <root>
      <level value="ALL" />
      <appender-ref ref="SysAppender" />
    </root>
    <!-- Print only messages of level DEBUG or above in the packages -->
    <logger name="WebLogger">
      <level value="DEBUG" />
    </logger>
    <appender name="SysAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <param name="File" value="App_Data/" />
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
    <appender name="consoleApp" type="log4net.Appender.ConsoleAppender,log4net">
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
  </log4net>
复制代码

第二步,先贴图下面贴出代码:

图7

图7中的代码:

 //配置log4
            log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo(Server.MapPath("~/Web.config")));

这样网站项目中log4net的配置工作就完成了。

最后一步是怎么在项目代码中应用了,我也简单的说一下,就是简单的使用,复杂的就不说了。还是跟上面一样上图说话:

图8

下面图9是项目中产生的日志:

图9

网站项目中log4net的配置就全部完成了,网上还有很多其他的配置方法,我这里只是讲解自己比较常使用的简单的配置方法。

桌面应用程序、控制台应用程序、Windows服务项目中log4net的配置

第一步:跟上面网站项目配置一样先把log4net程序包安装到项目中,两种方式。这里就不再重复讲解了,有什么不懂看上文就可以了。

第二步:也是一样只是由Web.config变成App.config文件代码还是一样,如图10:

图10

第三步:有点不一样了,我们要在项目中的AssemblyInfo.cs中加一行代码:

 

//log4net从配置文件中读取配置
[assembly: log4net.Config.XmlConfigurator(ConfigFileExtension = "config", Watch = true)]

 

如图11:

图11

 

最后一步就是在项目中使用了,跟网站项目中的使用一样就可以了。

有关log4net的配置工作就全部讲解完了,希望对大家有所帮助,有不足之地和错误希望指正和谅解!!!

细细品味C#——Timer及多线程编程 - 虾皮 - 博客园

mikel阅读(1131)

来源: 细细品味C#——Timer及多线程编程 – 虾皮 – 博客园

你对C#中的Timer了解多少?知道有三种Timer吗?他们的区别是什么?编程时选择哪个比较合适?

  你会线程(Thread)编程吗?多线程编程又知道多少?断点续传又知多少?

  一口气提了这么多问题,其实也是鄙人心中的疑惑,在前几日的编写Vod下载器中就遇到了线程的问题,包括Timer的使用,所以为了进一步学习,才把相关的好文章整理成册,重点强化一下,同时分享出来让那些和我一样欠缺这方面的同仁一同提高。

  文章下载地址:http://files.cnblogs.com/xia520pi/C_Sharp_Timer_Thread.rar

  文章的目录:

1、C#的Timer解析

1.1、版权声明

1.2、内容详情

2、Timer范例教程

2.1、版权声明

2.2、内容详情

3、Socket网络编程大全

3.1、版权声明

3.2、内容详情

3.2.1 简单服务器端

3.2.2 简单客户端

3.2.3 获得本机IP

3.2.4 端对端通信

3.2.5 点对点通信

3.2.6 UDP对时服务器端

3.2.7 UDP对时客户端

3.2.8 点对点传输文件

3.2.9 发送邮件

3.2.10 接收邮件

4、多线程使用thread、threadpool、timer

4.1、版权声明

4.2、内容详情

5、谈谈多线程的思维方式

5.1、版权声明

5.2、内容详情

6、断点续传、多线程上载

6.1、版权声明

6.2、内容详情

7、C#多线程学习

7.1、版权声明

7.2、内容详情

7.2.1 多线程的相关概念

7.2.2 如何操纵一个线程

7.2.3 生产者和消费者

7.2.4 多线程的自动管理(线程池)

7.2.5 多线程的自动管理(定时器Timer)

7.2.6 互斥对象Mutex

8、C#多线程编程

8.1、版权声明

8.2、内容详情

8.2.1 lock使用注意事项

8.2.2 集合类中Synchronized与SyncRoot属性原理分析

8.2.3 Monitor使用示例及Mutex简介

8.2.4 同步事件和等待句柄

8.2.5 Timer(定时器)使用示例

8.2.6 volatile关键字的原理探讨

8.2.7 Interlocked类操作

8.2.8 使用Semaphore类限制资源并发访问数

8.2.9 用ReaderWriterLock类实现多用户读/单用户写同步

8.2.10 异步方法调用

8.2.11 异步事件调用

8.2.12 BackgroundWorker

C# 指定平台编译项目 - 古兴越 - 博客园

mikel阅读(1557)

来源: C# 指定平台编译项目 – 古兴越 – 博客园

如CefSharp就需要指定平台,项目为Any CPU时,无法编译,总会提示出错。

如:

CefSharp.Common contains unmanaged resoures, set your project and solution platform to x86 or x64.

 

配置方式:

在解决方案右键属性 – 配置属性 – 配置 – 配置管理器 – 活动解决方案平台 – 新建 – 新建解决方案平台。

大致是这样。

 

无法打开物理文件mdf,操作系统错误 5:"5(拒绝访问。)" - Senior Instructor - NetSuite Consulting - CSDN博客

mikel阅读(665)

来源: 无法打开物理文件mdf,操作系统错误 5:”5(拒绝访问。)” – Senior Instructor – NetSuite Consulting – CSDN博客

无法打开物理文件mdf,操作系统错误 5:”5(拒绝访问。)”

环境: SQL Server 2008 R2
问题: 附加数据库时报错“无法打开物理文件mdf。操作系统错误5:5(拒绝访问)。
解决方案:
找到要附加的mdf文件-》右键-》属性-》安全-》选择当前用户-》编辑,勾选完全控制权限,确定。
对log文件相同操作。
————————————————
版权声明:本文为CSDN博主「Crazygolf」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/crazygolf/article/details/40296729

菜鸟程序员之Asp.net MVC Session过期异常的处理 - JustRun - 博客园

mikel阅读(799)

来源: 菜鸟程序员之Asp.net MVC Session过期异常的处理 – JustRun – 博客园

小赵是刚毕业的计算机专业方面的大学生,4年的大学时间里面,他读过了很多编程方面的数据,也动手也了很多代码。现在毕业了,他如愿的加入了T公司,开始了自己的程序员生涯。他信心满满,相信自己4年的学习到的东西,一定能够在工作派上用场,帮助自己很快的胜任现在的工作。

阅读目录:

一、Session引发的异常

二、使用MVC中的Filter来对Session进行验证

三、对于Ajax请求的中,Session失效的处理

四、处理Session过期异常的重要性

一, Session引发的异常

小赵刚进公司,就参与到了一个实际的项目中了,项目使用的是ASP.NET MVC。花了大概2个周的时间,小赵就完成了所有功能,提交给QA测试了。

过了一天,QA发回了测试结果,小赵过了一遍,发现原来自己做的东西,里面问题这么多。

其中一个bug是这样的:

使用Firefox登录进入系统后,再打开一个Tab,进入系统页面,点击logout. 在回到前一个tab页面,点击Save按钮,出现了js错误。这个时候应当将用户转到登陆页。

小赵看到这个bug,有些目瞪口呆,没想到QA用这么”暴力”的方式来测试自己的程序。在另一个Tab上点击logout, 会导致session清空的,这样再点击第一个tab上的Save按钮,调用的Ajax方法会出现异常的。

但是如何处理这种”非正常”操作引发的异常呢?

 

二,使用MVC中的Filter来对Session进行验证

小赵查了查资料,发现MVC中的AuthorizationFilter能够在实际访问Controller前,拦截请求,这个时候在这里可以对Session的有效性进行检查,如果发现Session失效了,就把用户转向登陆页。(关于MVC filter可以点这里)

复制代码
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
      public void OnAuthorization(AuthorizationContext filterContext)
      {
           var loginUser = filterContext.HttpContext.Session["User"];
           //When user has not login yet
           if (loginUser == null)
           {
               var redirectUrl = ConstantProvider.LoginURL + "?RedirectPath=" + filterContext.HttpContext.Request.Url;
               filterContext.Result = new RedirectResult(redirectUrl);
               return;
           }

      }
}
复制代码

三,对于Ajax请求的中,Session失效的处理

Ajax请求中,如果遇到session过期,使用上面的方法是不能够达到效果的。实现的思路是,如果发现是Ajax请求,就返回特定格式的Json数据,客户端对于这个数据进行处理,发现有Session失效的情况,就跳转到登录页面。

首先,扩展我们的MyAuthorizeAttribute

复制代码
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class MyAuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
      public void OnAuthorization(AuthorizationContext filterContext)
      {
           var loginUser = filterContext.HttpContext.Session["User"];
           //When user has not login yet
           if (loginUser == null)
           {
               var redirectUrl = ConstantProvider.LoginURL + "?RedirectPath=" + filterContext.HttpContext.Request.Url;                
               if(!filterContext.HttpContext.Request.IsAjaxRequest())
               {
                   filterContext.Result = new RedirectResult(redirectUrl);
               }
               else
               {
                  filterContext.Result = new JsonResult
                                         {
                                               Data = new
                                               {
                                                   Success = false,
                                                   Message = string.Empty,
                                                   Redirect = redirectUrl
                                         }
               };
           }
           return;
      }
}
复制代码

上面判断如果请求是来自于Ajax, 就返回一个Json Result,客户端处理的代码如下:

复制代码
 $.ajax({
            type: "POST",
            url: "@Url.ContactInfoAjax()",
            success: function (msg) {
                      if (msg.Success) {
                              …….                 
                      }
                      if (msg.Redirect) {
                         window.location = msg.Redirect;
                      }
        }
});
复制代码

四, 处理Session过期异常的重要性

说实话,开发人员开始项目的时候,往往关注在代码实现的功能上面,也就是程序”正常”工作时候的状态关注的更多,而对于”非正常”情况下,考虑的很少。而对于这些方面的考虑,才能让我们成为更加专业的程序员,摆脱菜鸟的处境。

使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器 – 码农网

mikel阅读(1240)

来源: 使用 CefSharp 在 C# App 中嵌入 Chrome 浏览器 – 码农网

介绍

以前曾试过在app中整合一个可靠又快速的web浏览器吗?

在本文中,你会学到如何轻松地将奇妙的CefSharp网页浏览器组件(基于Chromium)集成到你的C# app中。

然后,你可以使用此web浏览器:

  • 给用户提供一个集成的浏览体验
  • 用HTML / JavaScript编程添加嵌入式界面
  • 用于web自动化

CefSharp可靠,快速,完全开源,不需要任何额外的依赖就可以安装到最终用户(除VC ++ Runtime 2013以外)。

在本指南中,我们将使用WinForms项目,但CefSharp同样可工作于WPF项目。

入门

按照以下步骤快速开始CefSharp。

项目

1.用.NET 4.5.2创建一个Windows窗体应用程序(C#)项目

2.对项目命名(如“CefTest”)

DLL文件(NuGet方法)

3A)如果你使用的是NuGet,那么你可以从NuGet代码仓库抓取CefSharp.WinForms,跳过下面的手动方法。

3B)如果你已经使用了NuGet,那么导航SOLUTION > Configuration Manager,并将你的项目设置为x86或x64,因为目前不支持AnyCPU。

DLL文件(手动方法)

如果你使用的是NuGet,那么请跳过此章节!

3A)下载CefSharp二进制文件并解压它们。

CefSharp v51 x86(32位app)

CefSharp v51 x64(64位app)

3B)右击你的项目,点击“Add Reference”,然后选择“Browse”。

3C)选择这些DLL文件:

CefSharp.dll

CefSharp.Core.dll

CefSharp.WinForms.dll

3D)用ZIP选择所有文件:

3E)复制那些文件到项目的Debug文件夹(在Bin之中)

代码

4.右击你的主窗体,并选择“View Code”。

5.添加以下代码:

复制到import 部分:

using CefSharp;
using CefSharp.WinForms;

复制到代码段:

public ChromiumWebBrowser browser;
public void InitBrowser(){
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser ("www.google.com");
    this.Controls.Add(browser);
    browser.Dock = DockStyle.Fill;
}

在调用 InitializeComponent()之后就调用InitBrowser():

InitBrowser()

你的代码最后应该是这样的:

运行吧!

6.按F5键,你会看到谷歌主页!

故障排除

一个类型为’System.IO.FileNotFoundException’未处理的异常出现在browser.exe中
其他信息:无法加载文件或’CefSharp.Core.dll’程序集或它的一个依赖。

如果你收到此错误,请确保你安装了Visual C ++ 2013 Redistributable。

一个类型为’System.BadImageFormatException’未处理的异常出现在browser.exe中
其他信息:无法加载文件或’CefSharp.Core, Version=43.0.0.0, Culture=neutral,程序集

如果你得到这个错误,它意味着你在64位的PC上,而你的app用AnyCPU模式构建。你需要改变为x86或x64模式:

  1. 打开Solution Explorer面板
  2. 右键点击你的项目>Project Properties
  3. 单击Build标签
  4. 更改Platform target为x86或x64

全功能浏览器

如果你正在寻找一个全功能浏览器项目,那么检查这些用C# CefSharp构建的开源浏览器。

WebExpress

WPF。带有建议、多个标签、下载、书签、历史记录的地址栏。

<作者未提供截图>

SharpBrowser

Windows Forms。地址栏,多标签,下载。

译文链接:http://www.codeceo.com/article/cefsharp-charp-app-chrome.html
英文原文:Embedding Chrome in your C# App using CefSharp

C#使用CefSharp开源库开发Chrome 浏览器 - 可均可可 - 博客园

mikel阅读(1810)

来源: C#使用CefSharp开源库开发Chrome 浏览器 – 可均可可 – 博客园

    一、介绍

这个东西我以前没有接触过,但是公司项目里面有用到这个东西,所以就顺便研究一下。今天只是做了 WinForm 的测试,有时间了在试试 WPF 是如何实现的。刚开始一塌糊涂,有点麻烦,慢慢的理清了,其实也不是很难。

二、开发步骤

1、下载和安装程序集

当前程序集最新的版本是69.0.0,如果想直接下载程序集的 DLL ,可以通过该地址进行下载 https://www.nuget.org/packages/CefSharp.WinForms/69.0.0。说明一下,以后的版本有可能会变,具体的地址也有可能会变。可以通过nuget轻松获得所有的依赖库。如果的你的网络不好,可以先下载,然后再在项目中添加引用。 效果如图:

如果是使用 Windows 操作系统,开发 WinForm 应用,我们可以使用 NuGet 程序包进行安装:

复制代码
1             PM> Install-Package CefSharp.WinForms -Version 69.0.0
2 
3             NET CLI:
4 
5             >dotnet add package CefSharp.WinForms --version 69.0.0
6                 
7             Paket CLI:
8 
9             >paket add CefSharp.WinForms --version 69.0.0
复制代码

 2、代码实现

1)主窗体实现

主窗体如图:

主窗体代码:

复制代码
 1                 using CefSharp.WinForms;
 2                 using System.Windows.Forms;
 3 
 4                 namespace ChromiumWebBrowserForWindowsForms
 5                 {
 6                     public partial class frmBrower : Form
 7                     {
 8                         private ChromiumWebBrowser webBrowser;
 9 
10                         public frmBrower()
11                         {
12                             InitializeComponent();
13                             this.Load += Form1_Load;
14                         }
15 
16                         private void Form1_Load(object sender, System.EventArgs e)
17                         {
18                             webBrowser = new ChromiumWebBrowser("www.cnblog.com");
19                             webBrowser.Dock = DockStyle.Fill;
20                             this.pnlContainer.Controls.Add(webBrowser);
21                             webBrowser.Load("www.cnblogs.com");
22                         }
23 
24                         private void btnEnter_Click(object sender, System.EventArgs e)
25                         {
26                             ChildForm child = new ChildForm(txtUrl.Text);
27                             child.Show();
28                         }
29                     }
30                 }
复制代码

2)子窗体实现:

子窗体如图:

代码实现:

复制代码
 1                 using CefSharp.WinForms;
 2                 using System;
 3                 using System.Windows.Forms;
 4 
 5                 namespace ChromiumWebBrowserForWindowsForms
 6                 {
 7                     public partial class ChildForm : Form
 8                     {
 9                         private ChromiumWebBrowser webBrowser;
10                         private string url;
11                         public ChildForm()
12                         {
13                             InitializeComponent();
14                             this.Load += ChildForm_Load;
15                         }
16 
17                         public ChildForm(string text):this()
18                         {
19                             url = text;
20                         }
21 
22                         private void ChildForm_Load(object sender, EventArgs e)
23                         {
24                             webBrowser = new ChromiumWebBrowser(null);
25                             webBrowser.Dock = DockStyle.Fill;
26                             this.Controls.Add(webBrowser);
27                             webBrowser.Load(url);
28                         }
29                     }
30                 }
复制代码

3、解决问题

 1)、增加 AnyCPU 支持(CefSharp.Common does not work correctly on ‘AnyCPU’ platform. You need to specify platform (x86 / x64)。 这个错误其实是cefsharp的一个缺陷。cefsharpPic的项目团队说以后会把这个bug修补。我们暂时现在把这个问题解决。 )

[1]、您必须将<CefSharpAnyCpuSupport> true </ CefSharpAnyCpuSupport>添加到项目中的第一个<PropertyGroup>配置节(例如.csproj文件)

复制代码
                    <?xml version="1.0" encoding="utf-8"?>
                    <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
                      <Import Project="..\packages\CefSharp.WinForms.69.0.0\build\CefSharp.WinForms.props" Condition="Exists('..\packages\CefSharp.WinForms.69.0.0\build\CefSharp.WinForms.props')" />
                      <Import Project="..\packages\CefSharp.Common.69.0.0\build\CefSharp.Common.props" Condition="Exists('..\packages\CefSharp.Common.69.0.0\build\CefSharp.Common.props')" />
                      <Import Project="..\packages\cef.redist.x86.3.3497.1841\build\cef.redist.x86.props" Condition="Exists('..\packages\cef.redist.x86.3.3497.1841\build\cef.redist.x86.props')" />
                      <Import Project="..\packages\cef.redist.x64.3.3497.1841\build\cef.redist.x64.props" Condition="Exists('..\packages\cef.redist.x64.3.3497.1841\build\cef.redist.x64.props')" />
                      <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
                      <PropertyGroup>
                        <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>
复制代码

[2]、增加 <probing privatePath=”x86″/> 去你的 app.config 配置文件。

                    <runtime>
                        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
                            <probing privatePath="x86"/>
                        </assemblyBinding>
                    </runtime>

[3]、修改应用程序根目录下的 Program.cs 文件。

复制代码
 1                     [STAThread]
 2                     public static void Main()
 3                     {
 4                         var settings = new CefSettings();
 5                         settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";
 6 
 7                         Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
 8 
 9                         var browser = new BrowserForm();
10                         Application.Run(browser);
11                     }
复制代码

2)、没有在程序启动的时候初始化 CefSharp 导致添加ChromiumWebBrowser控件显示一片灰色。

[1]、要初始化 CefSharp 对象,否则就是什么都没有。

复制代码
 1                     [STAThread]
 2                     public static void Main()
 3                     {
 4                         var settings = new CefSettings();
 5                         settings.BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe";
 6 
 7                         Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
 8 
 9                         var browser = new BrowserForm();
10                         Application.Run(browser);
11                     }
复制代码

3)、bin目录下没有包含CefSharp.BrowserSubprocess.Core.dll、CefSharp.BrowserSubprocess.exe。关于这两个资源文件的作用,有兴趣可以了解浏览器的多进程架构机制原理。打开多个ChromiumWebBrowser控件显示网页就加载多个CefSharp.BrowserSubprocess.exe进程。

三、总结

这算是一个一个小的进步吧,以前没有遇过的东西,现在懂了就是进步。如有需要在深入了解。不忘初心,继续努力。

天下国家,可均也;爵禄,可辞也;白刃,可蹈也;中庸不可能也

[原创]SQL Server 日期区间查询between的补充

mikel阅读(1631)

SQL Server日期区间查询Between存在的问题

select * from order where orderdate between ‘2019-8-29’ and ‘2019-8-31’

这句只查询到2019-8-29到2019-8-30的数据,查询不到2019-8-31的数据

于是利用datediff函数又加入了一条查询当天的条件就解决了这个问题

select * from order where orderdate between ‘2019-8-29’ and ‘2019-8-31′ or datediff(day,orderdate,’2019-8-31’)=0