欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET后端知识汇总

程序员文章站 2022-04-02 18:28:33
C#.net系列后端知识点汇总(也有些许数据库、svn等),他山之石。 1..net相关技术:XML、webservice、SOAP,其中webservice使用三大技术:XML、SOAP、WSDL。 也有一说webservice三要素: 2.分布式:分布式作业、分布式存储。 3.数据库纵向切割、横 ......

c#.net系列后端知识点汇总(也有些许数据库、svn),他山之石。

1..net相关技术:xml、webservice、soap,其中webservice使用三大技术:xml、soap、wsdl。

也有一说webservice三要素:

  1. soap:简单对象访问协议,数据交换的一种协议规范,用来描述传递信息的格式。
  2. wsdl:web service description language,用来描述如何访问具体接口。
  3. uddi:用来管理、分发、查询webservice

2.分布式:分布式作业、分布式存储。

3.数据库纵向切割、横向切割。

4.log4net使用:通过配置文件:app.config或者web.config

         在<configsections>节点下,配置<section>

<section name="log4net" type="log4net.config.log4netconfigurationsectionhandler, log4net"/>

         对应<log4net>节点配置如下:主要有<appender>和<logger>两个节点

<log4net>

    <!--记录日志附加介质-->

    <appender name="infoappender" type="log4net.appender.rollingfileappender,log4net">

      <file value="log\\info\\" /><!--日志文件生成目录-->

      <appendtofile value="true" />

      <rollingstyle value="composite" /><!--混合使用日期和文件大小变换日志文件名-->

      <maxsizerollbackups value="-1" />

      <maximumfilesize value="1mb" /><!—文件大于1mb,另起一个日志文件-->

      <staticlogfilename value="false" />

      <datepattern value="yyyy-mm-dd&quot;.txt&quot;"/><!-- yyyy-mm-dd:每天都改变日志 -->

      <layout type="log4net.layout.patternlayout"><!—日志记录的格式-->

        <conversionpattern value="%date  %-5level  - %message%newline" />

      </layout>

    </appender>

    <!--错误日志附加介质-->

    <appender name="errorappender" type="log4net.appender.rollingfileappender,log4net">

      <file value="log\\error\\" />

      <appendtofile value="true" />

      <rollingstyle value="composite" /><!--混合使用日期和文件大小变换日志文件名-->

      <maxsizerollbackups value="-1" />

      <maximumfilesize value="1mb" />

      <staticlogfilename value="false" />

      <datepattern value="yyyy-mm-dd&quot;.txt&quot;"/><!-- yyyy-mm-dd:每天都改变日志 -->

      <layout type="log4net.layout.patternlayout">

        <conversionpattern value="%date  %-5level  - %message%newline" />

      </layout>

    </appender>

    <!--记录日志类-->

    <logger name="info">

      <level value="all"/>

      <appender-ref ref="infoappender" />

    </logger>

    <!--错误日志类-->

    <logger name="error" additivity="true">

      <level value="all"/>

      <appender-ref ref="errorappender"/>

    </logger>

  </log4net>

在类中应用:

a.自定义一个logger类,用来定义并实现记录日志方法

class loghelper

{

         public static readonly log4net.ilog loginfo = log4net.logmanager.getlogger("info");

    public static readonly log4net.ilog logerror = log4net.logmanager.getlogger("error");

         /// <summary>

    /// 记录日志

    /// </summary>

    /// <param name="info"></param>

    public static void writelog(string info)

    {

        if (loginfo.isinfoenabled)

        {

            loginfo.info(info);

        }

    }

    /// <summary>

    /// 错误日志

    /// </summary>

    /// <param name="info"></param>

    public static void writelog(string info,exception ex)

    {

        if (logerror.iserrorenabled)

        {

            logerror.error(info,ex);

        }

    }

}

b.使用:

loghelper.writelog("use info log");//使用说明日志

loghelper.writelog("use error log", ex);// 使用错误日志

appender:定义日志输出方式,写到哪,写成什么文件,包括:layout一个appender只能有一个layout。

logger:直接和应用程序交互的组件,logger只是产生日志,由它引用的appender记录到指定媒介。

5. svn管理文档,注意文档格式一定要正确,否则会引发冲突,比如提交的是rtf(富文本文件),update之后以word格式打开,然后提交,以rtf格式提交的一方再update会有冲突!

 

6. 操作系统中,请求默认端口是80端口,即请求时不添加端口号则默认为是80,windows,linux应该都是。

 

7. 数据库 oralce/sqlserver 不等于一个不为空的值,意味着:1.不等于这个值,2.不等于空(null),所以想把空值不漏掉请加:xx <>'1' or xx is null

sqlserver:isnull(xx,0) <> '1'

oralce:nvl(xx,0) <> '1'

 

8. 使用iis托管应用程序时,当我们需要上传大文件(4mb以上)时,应用程序会提示maximum request length exceeded的错误信息。该错误信息的翻译:超过最大请求长度:设置

web.config:

<system.web>

<httpruntime  requestvalidationmode="2.0" maxrequestlength="2097151"/>

</system.web>

<!--取消校验request获取数据有特殊字符,上传大文件设置-->

 

9. iis7.0、iis7.5、iis8.0等提示“请求筛选模块被配置为拒绝包含双重转义序列的请求”的解决方法:

<system.webserver>

         <security>

                   <requestfiltering allowdoubleescaping="true"/>

    </security>

</system.webserver>

 

10.文件名不能包含的特殊字符筛选:

filename = regex.replace(bjdt.rows[0]["报价名称"] + "", @"[\/*<>???::""]", "");// 特殊字符置为空

 

11. 全局程序集缓存(共享程序集gac)

gac

(目录:c:\windows\assembly)

管理员进入 vs 2017的开发人员命令提示符

卸载程序集

gacutil -u office

安装程序集

gacutil -i d:\cooper\dll\office

 

12. cmd:shutdown -a

停止一切通过计划任务执行的关机、注销等操作.

 

13. wcf内存自检失败:

异常信息:内存入口检查失败,因为可用内存(xxx 字节)少于总内存的 xx%。因此,该服务不可用于传入的请求。若要解决此问题,请减少计算机上的负载,或调整 servicehostingenvironment 配置元素上的 minfreememorypercentagetoactivateservice 的值。

说明: 执行当前 web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: system.insufficientmemoryexception: 内存入口检查失败,因为可用内存(438648832 字节)少于总内存的 50%。因此,该服务不可用于传入的请求。若要解决此问题,请减少计算机上的负载,或调整 servicehostingenvironment 配置元素上的 minfreememorypercentagetoactivateservice 的值。

英文报错:memory gates checking failed because the free memory ({0} bytes) is less than {1}% of total memory. as a result, the service will not be available for incoming requests. to resolve this, either reduce the load on the machine or adjust the value of minfreememorypercentagetoactivateservice on the servicehostingenvironment config element.

出现该错误信息的原因是因为wcf服务激活之前,系统应该具有的最小内存量不足config文件中设置的百分比。

 

<servicehostingenvironment multiplesitebindingsenabled="true" minfreememorypercentagetoactivateservice="0" />

 

14.svn-sqlite3:

svn更新或提交代码中断时容易lock,这时可以试试clear up,如果不管用,则,在.svn文件夹下放一个sqlite3,然后执行如下语句:

.open wc.db;

select * from work_queue;

select * from wc_lock;

 

15.cron表达式:quartz使用

cron表达式,不论是*/2,还是0/2  ,都是在整点进行:

如果每小时执行一次:0 0 * * * ? *  或者  0 0 0/1 * * ? *  或者 0 0 */1 * * ? *,用cron表达式就相当于知道到底在哪一个时间点执行

例子:

0 0/5 * * * ? *:每五分钟执行一次,假如现在是17:49,则会在17:50执行,把每小时按五分钟分割成12份,共13个时刻点:0 5 10 15 20 25 30 35 40 45 50 55 59:59,所以会在当前时间的下一个整点执行。如果这样写:0 */5 * * * ? *,假如现在是17:49,会立即执行一次,下一次的执行时刻同上

 

16.power designer 生成数据库文档:

1.生成physical-data-model

2.report->reports

   --list of tables

   --table 

      --list of table columns    layout  name 25% data type 20%  default value 15% comment 40%

section -header/footer 清空