首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,646 阅读
2
Mac打印机设置黑白打印
5,042 阅读
3
修改elementUI中el-table树形结构图标
4,945 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,705 阅读
5
intelliJ Idea 2022.2.X破解
4,444 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Mac
Spring Cloud
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
MySQL
.Net
Spring Cloud Alibaba
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
629
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
629
篇与
的结果
2018-04-03
关于网站加强评论审核通知
评论乱象 其实博客鲜有文章设置回复可见的。有些个别的文章设置回复可见,可能是因为有些东西确实是自己花了好大功夫才弄上的,所以希望给博客增加一点人气。 最近博客筛查了一下后台用户信息,可以很明显的看到好多用户的注册信息也好、评论也好都是一些垃圾信息。当然还有一些当初机器人注册的,目前这部分的人员已经全部处理,并且前台加强了验证。评论治理 为了切实加强博客的质量,包括读者的质量,即日起,对于博客所有的人员注册以及回复加强审核。包括但不限于以下内容:加强用户名审核,防止出现乱七八糟的用户名,诸如哈哈,你好之类的用户名称,一概拒绝加强邮箱审核,无效的有效一律禁止注册。加强评论内容审核。评论内容必须与主题相关,否则一概拒绝。
2018年04月03日
1,301 阅读
1 评论
1 点赞
2018-04-01
Tomcat配置多个域名
Java最常实用的服务软件应该就是Tomcat了,前段时间也说过,赶在腾讯云搞活动的时间,把dotnetcore.com.cn、ide.net.cn还有lisen.cc几个域名也一起备案了。最近想着用Java新建一个网站。Tomcat配置多个域名还是很简单的,仍然是通过server.xml进行配置。<!--lisen.cc配置--> <Host name="lisen.cc" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <Context docBase="LiSen" path="" /> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host> <!--dotnetcore配置--> <Host name="dotnetcore.com.cn" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Context docBase="DotNetCore" path="" /> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
2018年04月01日
1,088 阅读
0 评论
0 点赞
2018-03-30
域名备案完成
前段时间,腾讯的服务器搞活动,自己没忍住,又买了三年的腾讯云的服务器,本来想着是当数据库服务器用的,后来想想过于浪费,正好手头还有几个域名一直没用,索性一次性全部给备案了。 国内备案大家都知道,之前主体如果备案过也是需要审核的,所以无奈之下只能把博客暂时关闭了。 目前备案的域名正在紧张的准备建站中…不过目前还没想好是否继续使用wordpress 最后,不得不吐槽一下腾讯的备案速度。初审是相当的慢,每个环节基本都得往后拖一天,真是无力吐槽,这点说实话跟阿里云的差距还是相当大,最后好在网站顺利通过备案
2018年03月30日
1,263 阅读
0 评论
1 点赞
2018-03-11
log4net详细介绍
log4net介绍log4net是一个功能著名的开源日志记录组件。利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access, Oracle9i,Oracle8i,DB2,SQLite)中。并且我们还可以记载控制要记载的日志级别,可以记载的日志类别包括:FATAL(致命错误)、ERROR(一般错误)、WARN(警告)、INFO(一般信息)、DEBUG(调试信息)。log4net安装这里不多过多介绍了,直接通过nuget安装即可。log4net.config配置<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!--根配置--> <root> <!--日志级别:可选值: ERROR > WARN > INFO > DEBUG --> <level value="ERROR"/> <level value="WARN"/> <level value="INFO"/> <level value="DEBUG"/> <appender-ref ref="ErrorLog" /> <appender-ref ref="WarnLog" /> <appender-ref ref="InfoLog" /> <appender-ref ref="DebugLog" /> <appender-ref ref="Sqlserver" /> </root> <!-- 错误 Error.log--> <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender"> <!--目录路径,可以是相对路径或绝对路径--> <param name="File" value="Log\Ide_Net_Cn_log"/> <!--文件名,按日期生成文件夹--> <param name="DatePattern" value="/yyyy-MM-dd/"Error.log""/> <!--追加到文件--> <appendToFile value="true"/> <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]--> <rollingStyle value="Composite"/> <!--写到一个文件--> <staticLogFileName value="false"/> <!--单个文件大小。单位:KB|MB|GB--> <maximumFileSize value="200MB"/> <!--最多保留的文件数,设为"-1"则不限--> <maxSizeRollBackups value="-1"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!-- 警告 Warn.log--> <appender name="WarnLog" type="log4net.Appender.RollingFileAppender"> <!--目录路径,可以是相对路径或绝对路径--> <param name="File" value="Log\Ide_Net_Cn_log"/> <!--文件名,按日期生成文件夹--> <param name="DatePattern" value="/yyyy-MM-dd/"Warn.log""/> <!--追加到文件--> <appendToFile value="true"/> <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]--> <rollingStyle value="Composite"/> <!--写到一个文件--> <staticLogFileName value="false"/> <!--单个文件大小。单位:KB|MB|GB--> <maximumFileSize value="200MB"/> <!--最多保留的文件数,设为"-1"则不限--> <maxSizeRollBackups value="-1"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <!-- 信息 Info.log--> <appender name="InfoLog" type="log4net.Appender.RollingFileAppender"> <!--目录路径,可以是相对路径或绝对路径--> <param name="File" value="Log\Ide_Net_Cn_log"/> <!--文件名,按日期生成文件夹--> <param name="DatePattern" value="/yyyy-MM-dd/"Info.log""/> <!--追加到文件--> <appendToFile value="true"/> <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]--> <rollingStyle value="Composite"/> <!--写到一个文件--> <staticLogFileName value="false"/> <!--单个文件大小。单位:KB|MB|GB--> <maximumFileSize value="200MB"/> <!--最多保留的文件数,设为"-1"则不限--> <maxSizeRollBackups value="-1"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!-- 调试 Debug.log--> <appender name="DebugLog" type="log4net.Appender.RollingFileAppender"> <!--目录路径,可以是相对路径或绝对路径--> <param name="File" value="Log\Ide_Net_Cn_log"/> <!--文件名,按日期生成文件夹--> <param name="DatePattern" value="/yyyy-MM-dd/"Debug.log""/> <!--追加到文件--> <appendToFile value="true"/> <!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]--> <rollingStyle value="Composite"/> <!--写到一个文件--> <staticLogFileName value="false"/> <!--单个文件大小。单位:KB|MB|GB--> <maximumFileSize value="200MB"/> <!--最多保留的文件数,设为"-1"则不限--> <maxSizeRollBackups value="-1"/> <!--日志格式--> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="DEBUG" /> <param name="LevelMax" value="DEBUG" /> </filter> </appender> <!-- 调试 Sqlserver.log--> <appender name="Sqlserver" type="log4net.Appender.ADONetAppender"> <!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库--> <bufferSize value="0" /> <!--日志数据库连接串--> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="DATABASE=Ide_Net_Cn;SERVER=lisen.org;UID=sa;PWD=123456a?;Connect Timeout=30;" /> <!--日志数据库脚本--> <commandText value="INSERT INTO LogDetails ([OperationTime],[Url],[Ip],[Host],[Browser],[UserName],[User],Content,ExceptionInfo,ExceptionSource,ExceptionRemark,Level) VALUES ( @OperationTime, @Url, @Ip, @Host, @Browser,@UserName,@User,@Content,@ExceptionInfo,@ExceptionSource,@ExceptionRemark,@Level)" /> <!--日志内码 --> <!--<parameter> <parameterName value="@ID" /> <dbType value="String" /> <size value="36" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "NEWID()"/> </layout> </parameter>--> <!--操作时间--> <parameter> <parameterName value="@OperationTime" /> <dbType value="String" /> <size value="100" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{OperationTime}"/> </layout> </parameter> <!--url --> <parameter> <parameterName value="@Url" /> <dbType value="String" /> <size value="255" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Url}"/> </layout> </parameter> <!--ip地址--> <parameter> <parameterName value="@Ip" /> <dbType value="String" /> <size value="255" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Ip}"/> </layout> </parameter> <!--主机--> <parameter> <parameterName value="@Host" /> <dbType value="String" /> <size value="255" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Host}"/> </layout> </parameter> <!--浏览器--> <parameter> <parameterName value="@Browser" /> <dbType value="String" /> <size value="100" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Browser}"/> </layout> </parameter> <!--UserName --> <parameter> <parameterName value="@UserName" /> <dbType value="String" /> <size value="20" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{UserName}"/> </layout> </parameter> <!--用户内码--> <parameter> <parameterName value="@User" /> <dbType value="String" /> <size value="40" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{User}"/> </layout> </parameter> <!--日志内容--> <parameter> <parameterName value="@Content" /> <dbType value="String" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Content}"/> </layout> </parameter> <!--异常信息--> <parameter> <parameterName value="@ExceptionInfo" /> <dbType value="String" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{ExceptionInfo}"/> </layout> </parameter> <!--异常来源--> <parameter> <parameterName value="@ExceptionSource" /> <dbType value="String" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{ExceptionSource}"/> </layout> </parameter> <!--异常信息备注--> <parameter> <parameterName value="@ExceptionRemark" /> <dbType value="String" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{ExceptionRemark}"/> </layout> </parameter> <!--异常等级--> <parameter> <parameterName value="@Level" /> <dbType value="String" /> <size value="1" /> <layout type="Ide.Net.Cn.Util.Log.LogLayout" > <conversionPattern value = "%property{Level}"/> </layout> </parameter> </appender> <!--Oracle数据库--> <appender name="OracleAppender" type="log4net.Appender.AdoNetAppender"> <!-- Oracle数据源--> <connectionType value="Oracle.ManagedDataAccess.Client.OracleConnection, Oracle.ManagedDataAccess, Version=4.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" /> <!-- Oracle连接字符串--> <connectionString value="DATA SOURCE=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.3.206)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)));PASSWORD=watdb;PERSIST SECURITY INFO=True;USER ID=watdb;"/> <commandText value="INSERT INTO SYS_LOG(Dates,Levels,Logger,Message,Exception,ClientUser,ClientIP,RequestUrl,Action)VALUES(:Dates,:Levels,:Logger,:Message,:Exception,:ClientUser,:ClientIP,:RequestUrl,:Action)"/> <!-- 设置缓存区大小 1表明有一条日志就要写入 如果10就表示日志到达10条时一起写入 --> <bufferSize value="0"/> <parameter> <parameterName value=":Dates" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout"/> </parameter> <parameter> <parameterName value=":Levels" /> <dbType value="String" /> <size value="50" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value=":Logger" /> <dbType value="String" /> <size value="200" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value=":Message" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value=":Exception" /> <dbType value="String" /> <size value="4000" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%exception" /> </layout> </parameter> <!--DIY--> <parameter> <parameterName value=":ClientUser" /> <dbType value="String" /> <size value="100" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{ClientUser}" /> </layout> </parameter> <parameter> <parameterName value=":ClientIP" /> <dbType value="String" /> <size value="20" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{ClientIP}" /> </layout> </parameter> <parameter> <parameterName value=":RequestUrl" /> <dbType value="String" /> <size value="500" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{RequestUrl}" /> </layout> </parameter> <parameter> <parameterName value=":Action" /> <dbType value="String" /> <size value="20" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{Action}" /> </layout> </parameter> </appender> <!--Sqlite数据库--> <appender name="SqliteAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="0" /> <connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite, Version=1.0.98.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> <connectionString value="Data Source=|DataDirectory|test.db;Version=3;" /> <commandText value="INSERT INTO Log (Date, Level, Logger, ClientUser,ClientIP, RequestUrl,Action, Message, Exception) VALUES (@Date, @Level, @Logger,@ClientUser,@ClientIP, @RequestUrl,@Action, @Message, @Exception)" /> <parameter> <parameterName value="@Date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@Level" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%level" /> </layout> </parameter> <parameter> <parameterName value="@Logger" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%logger" /> </layout> </parameter> <parameter> <parameterName value="@ClientUser" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{ClientUser}" /> </layout> </parameter> <parameter> <parameterName value="@ClientIP" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{ClientIP}" /> </layout> </parameter> <parameter> <parameterName value="@RequestUrl" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{RequestUrl}" /> </layout> </parameter> <parameter> <parameterName value="@Action" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%property{Action}" /> </layout> </parameter> <parameter> <parameterName value="@Message" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%message" /> </layout> </parameter> <parameter> <parameterName value="@Exception" /> <dbType value="String" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%exception" /> </layout> </parameter> </appender> </log4net> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> </configuration> <!-- 调用实例 log4net.ILog log = log4net.LogManager.GetLogger("Filelog"); log.Info(Message); %m(message):输出的日志消息,如ILog.Debug(…)输出的一条消息 %n(new line):换行 %d(datetime):输出当前语句运行的时刻 %r(run time):输出程序从运行到执行到当前语句时消耗的毫秒数 %t(thread id):当前语句所在的线程ID %p(priority): 日志的当前优先级别,即DEBUG、INFO、WARN…等 %c(class):当前日志对象的名称 %L:输出语句所在的行号 %F:输出语句所在的文件名 %-数字:表示该项的最小长度,如果不够,则用空格填充 例如,转换模式为%r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出: 176 [main] INFO org.foo.Bar - Located nearest gas station. -->定义实体类LogEntity.cs/************************************************************************************* * CLR版 本: 4.0.30319.42000 * 机器名称: LISEN0100 * 命名空间: Ide.Net.Cn.Util.Log * 文件名称: LogEntity * 创建时间: 2018/3/11 15:51:49 * 作 者: 李森的博客 * 个人博客: http://lisen.cc * 个人邮箱: lisen@lisen.org * 文件说明: * 修改时间: * 修 改 人: 李森的博客 * 修改说明: *************************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ide.Net.Cn.Util.Log { public class LogEntity { #region 属性 /// <summary> /// 操作时间 /// </summary> public DateTime OperationTime { get; set; } /// <summary> /// Url地址 /// </summary> public string Url { get; set; } /// <summary> /// 类名 /// </summary> public string Class { get; set; } /// <summary> /// IP /// </summary> public string Ip { get; set; } /// <summary> /// 主机 /// </summary> public string Host { get; set; } /// <summary> /// 浏览器 /// </summary> public string Browser { get; set; } /// <summary> /// 操作人 /// </summary> public string UserName { get; set; } /// <summary> /// 操作人编号或内码 /// </summary> public string User { get; set; } /// <summary> /// 内容 /// </summary> public string Content { get; set; } /// <summary> /// 异常信息 /// </summary> public string ExceptionInfo { get; set; } /// <summary> /// 异常来源 /// </summary> public string ExceptionSource { get; set; } /// <summary> /// 异常信息备注 /// </summary> public string ExceptionRemark { get; set; } #endregion #region 构造函数 #endregion #region 方法 #endregion } }定义文本格式化类LogFormat.cs,用于控制文本输出/************************************************************************************* * CLR版 本: 4.0.30319.42000 * 机器名称: LISEN0100 * 命名空间: Ide.Net.Cn.Util.Log * 文件名称: LogFormat * 创建时间: 2018/3/11 16:37:24 * 作 者: 李森的博客 * 个人博客: http://lisen.cc * 个人邮箱: lisen@lisen.cc * 文件说明: 格式化消息实体 * 修改时间: * 修 改 人: 李森的博客 * 修改说明: *************************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ide.Net.Cn.Util.Log { public class LogFormat { #region 属性 #endregion #region 构造函数 #endregion #region 方法 /// <summary> /// 生成错误 /// </summary> /// <param name="logEntity">对象</param> /// <returns></returns> public static string ErrorFormat(LogEntity logEntity) { StringBuilder strInfo = new StringBuilder(); strInfo.Append("1. 错误: >> 操作时间: " + logEntity.OperationTime + " 操作人: " + logEntity.UserName + " 操作人编号: " + logEntity.User + " \r\n"); strInfo.Append("2. 地址: " + logEntity.Url + " \r\n"); strInfo.Append("3. 类名: " + logEntity.Class + " \r\n"); strInfo.Append("4. Ip : " + logEntity.Ip + " 主机: " + logEntity.Host + " 浏览器: " + logEntity.Browser + " \r\n"); strInfo.Append("5. 内容: " + logEntity.Content + "\r\n"); strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); return strInfo.ToString(); } /// <summary> /// 生成警告 /// </summary> /// <param name="logEntity">对象</param> /// <returns></returns> public static string WarnFormat(LogEntity logEntity) { StringBuilder strInfo = new StringBuilder(); strInfo.Append("1. 警告: >> 操作时间: " + logEntity.OperationTime + " 操作人: " + logEntity.UserName + " 操作人编号: " + logEntity.User + " \r\n"); strInfo.Append("2. 地址: " + logEntity.Url + " \r\n"); strInfo.Append("3. 类名: " + logEntity.Class + " \r\n"); strInfo.Append("4. Ip : " + logEntity.Ip + " 主机: " + logEntity.Host + " 浏览器: " + logEntity.Browser + " \r\n"); strInfo.Append("5. 内容: " + logEntity.Content + "\r\n"); strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); return strInfo.ToString(); } /// <summary> /// 生成信息 /// </summary> /// <param name="logEntity">对象</param> /// <returns></returns> public static string InfoFormat(LogEntity logEntity) { StringBuilder strInfo = new StringBuilder(); strInfo.Append("1. 信息: >> 操作时间: " + logEntity.OperationTime + " 操作人: " + logEntity.UserName + " 操作人编号: " + logEntity.User + " \r\n"); strInfo.Append("2. 地址: " + logEntity.Url + " \r\n"); strInfo.Append("3. 类名: " + logEntity.Class + " \r\n"); strInfo.Append("4. Ip : " + logEntity.Ip + " 主机: " + logEntity.Host + " 浏览器: " + logEntity.Browser + " \r\n"); strInfo.Append("5. 内容: " + logEntity.Content + "\r\n"); strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); return strInfo.ToString(); } /// <summary> /// 生成调试 /// </summary> /// <param name="logEntity">对象</param> /// <returns></returns> public static string DebugFormat(LogEntity logEntity) { StringBuilder strInfo = new StringBuilder(); strInfo.Append("1. 调试: >> 操作时间: " + logEntity.OperationTime + " 操作人: " + logEntity.UserName + " 操作人编号: " + logEntity.User + " \r\n"); strInfo.Append("2. 地址: " + logEntity.Url + " \r\n"); strInfo.Append("3. 类名: " + logEntity.Class + " \r\n"); strInfo.Append("4. Ip : " + logEntity.Ip + " 主机: " + logEntity.Host + " 浏览器: " + logEntity.Browser + " \r\n"); strInfo.Append("5. 内容: " + logEntity.Content + "\r\n"); strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); return strInfo.ToString(); } /// <summary> /// 生成异常信息 /// </summary> /// <param name="logEntity">对象</param> /// <returns></returns> public static string ExceptionFormat(LogEntity logEntity) { StringBuilder strInfo = new StringBuilder(); strInfo.Append("1. 调试: >> 操作时间: " + logEntity.OperationTime + " 操作人: " + logEntity.UserName + " 操作人编号: " + logEntity.User + " \r\n"); strInfo.Append("2. 地址: " + logEntity.Url + " \r\n"); strInfo.Append("3. 类名: " + logEntity.Class + " \r\n"); strInfo.Append("4. 主机: " + logEntity.Host + " Ip : " + logEntity.Ip + " 浏览器: " + logEntity.Browser + " \r\n"); strInfo.Append("5. 异常: " + logEntity.ExceptionInfo + "\r\n"); //strInfo.Append("6. 来源: " + logEntity.ExceptionSource + "\r\n"); //strInfo.Append("7. 实例: " + logEntity.ExceptionRemark + "\r\n"); strInfo.Append("-----------------------------------------------------------------------------------------------------------------------------\r\n"); return strInfo.ToString(); } #endregion } }定义工厂类LogFactory.cs,返回log类型/************************************************************************************* * CLR版 本: 4.0.30319.42000 * 机器名称: LISEN0100 * 命名空间: Ide.Net.Cn.Util.Log * 文件名称: LogFactory * 创建时间: 2018/3/11 15:27:20 * 作 者: 李森的博客 * 个人博客: http://lisen.cc * 个人邮箱: lisen@lisen.org * 文件说明: 日志工厂类,产生错误、警告、信息、调试类 * 修改时间: * 修 改 人: 李森的博客 * 修改说明: *************************************************************************************/ using log4net; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; namespace Ide.Net.Cn.Util.Log { public class LogFactory { #region 属性 #endregion #region 构造函数 /// <summary> /// 构造函数 /// </summary> static LogFactory() { FileInfo fileInfo = new FileInfo(HttpContext.Current.Server.MapPath("~/XmlConfig/log4net.config")); log4net.Config.XmlConfigurator.ConfigureAndWatch(fileInfo); } #endregion #region 方法 public static ILog GetLogger(LogLevel logLevel) { ILog log = null; switch (logLevel) { case LogLevel.Error: log = LogManager.GetLogger("ErrorLog"); break; case LogLevel.Warning: log = LogManager.GetLogger("WarnLog"); break; case LogLevel.Info: log = LogManager.GetLogger("InfoLog"); break; case LogLevel.Debug: log = LogManager.GetLogger("DebugLog"); break; } return log; } public static ILog ErrorLog() { return LogManager.GetLogger("ErrorLog"); } public static ILog WarnLog() { return LogManager.GetLogger("WarnLog"); } public static ILog InfoLog() { return LogManager.GetLogger("InfoLog"); } public static ILog DebugLog() { return LogManager.GetLogger("DebugLog"); } public static ILog SqlLog() { return LogManager.GetLogger("Sqlserver"); } #endregion } }定义公共类log.cs,用于输出日志/************************************************************************************* * CLR版 本: 4.0.30319.42000 * 机器名称: LISEN0100 * 命名空间: Ide.Net.Cn.Util.Log * 文件名称: Log * 创建时间: 2018/3/11 15:04:03 * 作 者: 李森的博客 * 个人博客: http://lisen.cc * 个人邮箱: lisen@lisen.cc * 文件说明: 日志文件类 * 修改时间: * 修 改 人: 李森的博客 * 修改说明: *************************************************************************************/ using log4net; using System; using System.Collections.Generic; using System.Configuration; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ide.Net.Cn.Util.Log { public class Log { #region 字段属性 private ILog log; private bool IsLog = true; #endregion #region 构造函数 public Log(ILog log) { this.log = log; IsLog = ConfigurationManager.AppSettings["IsLog"].ToLower() == "true" ? true : false; } #endregion #region 方法 /// <summary> /// 写入错误日志 /// </summary> /// <param name="errorMsg">错误消息</param> public void Error(LogEntity errorMsg) { if (IsLog) { log.Error(LogFormat.ErrorFormat(errorMsg)); } } /// <summary> /// 写入警告日志 /// </summary> /// <param name="warnMsg">警告消息</param> public void Warn(LogEntity warnMsg) { if (IsLog) { log.Warn(LogFormat.WarnFormat(warnMsg)); } } /// <summary> /// 写入警告日志 /// </summary> /// <param name="warnMsg">警告消息</param> public void Warn(LogEntity warnMsg, Exception exception) { if (IsLog) { log.Warn(LogFormat.WarnFormat(warnMsg), exception); } } /// <summary> /// 写入信息日志 /// </summary> /// <param name="infoMsg">信息消息</param> public void Info(LogEntity infoMsg) { if (IsLog) { log.Info(LogFormat.InfoFormat(infoMsg)); } } /// <summary> /// 写入调试日志 /// </summary> /// <param name="debugMsg">调试消息</param> public void Debug(LogEntity debugMsg) { if (IsLog) { log.Debug(LogFormat.DebugFormat(debugMsg)); } } #endregion } }使用定义一个aspx页面,窗体载入后测试日志文件using Ide.Net.Cn.Util.Log; using log4net; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Ide.Net.Cn.Web { public partial class _Default : Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //ILog log = LogFactory.ErrorLog();//文本日志 ILog log = LogFactory.SqlLog();//数据库日志 Log logger = new Log(log); LogEntity logEntity = new LogEntity { OperationTime = DateTime.Now, Url = "lisen.cc" }; try { logger.Warn(logEntity); } catch (Exception ex) { logger.Warn(logEntity, ex); } } } } }数据库表结构USE [Ide_Net_Cn] GO /****** Object: Table [dbo].[LogDetails] Script Date: 03/11/2018 19:13:45 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO CREATE TABLE [dbo].[LogDetails]( [ID] [varchar](36) NOT NULL, [OperationTime] [datetime] NULL, [Url] [varchar](255) NULL, [Ip] [nvarchar](255) NULL, [Host] [nvarchar](255) NULL, [Browser] [nvarchar](100) NULL, [UserName] [nvarchar](20) NULL, [User] [nvarchar](40) NULL, [Content] [nvarchar](max) NULL, [ExceptionInfo] [nvarchar](max) NULL, [ExceptionSource] [nvarchar](max) NULL, [ExceptionRemark] [nvarchar](max) NULL, [Level] [char](1) NULL, PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], CONSTRAINT [LogDetails_Code] UNIQUE NONCLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_PADDING OFF GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'浏览器型号+版本号' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'LogDetails', @level2type=N'COLUMN',@level2name=N'Browser' GO EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'1-error; 2-warn; 3-info; 4-debug' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'LogDetails', @level2type=N'COLUMN',@level2name=N'Level' GO ALTER TABLE [dbo].[LogDetails] ADD DEFAULT (newid()) FOR [ID] GO ALTER TABLE [dbo].[LogDetails] ADD DEFAULT (NULL) FOR [ExceptionSource] GO
2018年03月11日
1,205 阅读
0 评论
1 点赞
2018-03-11
log4net不写日志原因分析
今天闲着没事看了一下log4net的东西,本来打算写个简单的日志,但是发现系统没有记录日志。其实出现这种情况,基本可以断定是配置文件没有读取到导致的。问题排查为了能够排查问题,我们打开vs查看输出信息由于我把配置文件放到单独项目,所以调增了一下我的配置文件读取方式,如下:FileInfo fileInfo = new FileInfo(HttpContext.Current.Server.MapPath("~/XmlConfig/log4net.config")); log4net.Config.XmlConfigurator.ConfigureAndWatch(fileInfo); 然后就可以看到输出了
2018年03月11日
1,272 阅读
0 评论
0 点赞
2018-03-11
2018最新可备案域名列表(org域名不可备案)
根据工信部要求,目前工信部可接受备案域名后缀:英文域名:.cn/.ren/.wang/.citic/.top/.sohu/.xin/.com/.net/.xyz/.vip/.work/.law/.beer/.club/.shop/.site/.ink/.info/.mobi/.red/.pro/.kim/.ltd/.group/.auto/.link/.biz/.fun/.online/.store/.tech/.art/.design/.wiki/.love/.center/.video/.social/.team/.show/.cool/.zone/.world/.today/.city/.chat/.company/.live/.fund/.gold/.plus/.guru/.run/.pub/.email/.life中文域名:.中国/.公司/.网络/.政务/.公益/.政务.CN/.公益.CN/.网址/.商城/.网店/.中信/.商标/.信息/.广东/.佛山/.集团/.我爱你/.网店/.手机/.购物/.在线/.中文网/.游戏/.企业/.娱乐/.商店/.餐厅/.招聘除以上域名,其他域名后缀均无法在工信部进行备案。
2018年03月11日
1,226 阅读
0 评论
2 点赞
2018-03-10
Asp.Net实现图形验证码
平时我们使用验证码的情形还是非常多的,比如登陆界面、发送短信验证码等,现在新的验证方式也又很多,比如数学计算或者滑块等,这里我们仅仅介绍传统的图形验证码。修改web.config,设置图形验证码的位数 <appSettings> <add key="VerifyCodeNum" value="4"/> </appSettings> 生成图片公共类using System; using System.Collections.Generic; using System.Configuration; using System.Drawing; using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Web; /// <summary> /// VerifyCode 的摘要说明 /// </summary> public class VerifyCode { public VerifyCode() { // // TODO: 在此处添加构造函数逻辑 // } /// <summary> /// 生成随机数 /// </summary> /// <returns></returns> public static string GetVerifyCode() { //获取系统配置的随机数的位数 int vCodeNum = Convert.ToInt32(ConfigurationManager.AppSettings["VerifyCodeNum"]); string vChar = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,m,n,p" + ",q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,P,P,Q" + ",R,S,T,U,V,W,X,Y,Z"; string[] vArray = vChar.Split(','); string code = "";//产生的随机数 int temp = -1;//记录上次随机数值,尽量避避免生产几个一样的随机数 Random rand = new Random(); //采用一个简单的算法以保证生成随机数的不同 for (int i = 1; i < vCodeNum + 1; i++) { if (temp != -1) { rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));//初始化随机类 } int t = rand.Next(61);//获取随机数 if (temp != -1 && temp == t) { return GetVerifyCode();//如果获取的随机数重复,则递归调用 } ttemp = t;//把本次产生的随机数记录起来 code += vArray[t];//随机数的位数加一 } return code; } /// <summary> /// 该方法是将生成的随机数写入图像文件 /// </summary> /// <param name="code">code是一个随机数</param> public static MemoryStream CreateImage(out string code) { code = GetVerifyCode(); Bitmap Img = null; Graphics g = null; MemoryStream ms = null; Random random = new Random(); //验证码颜色集合 Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; //验证码字体集合 string[] fonts = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; //定义图像的大小,生成图像的实例 Img = new Bitmap(((int)code.Length) * 16, 32); g = Graphics.FromImage(Img);//从Img对象生成新的Graphics对象 g.Clear(Color.White);//背景设为白色 //在随机位置画背景点 for (int i = 0; i < 100; i++) { int x = random.Next(Img.Width); int y = random.Next(Img.Height); g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); } //验证码绘制在g中 for (int i = 0; i < code.Length; i++) { int cindex = random.Next(7);//随机颜色索引值 int findex = random.Next(5);//随机字体索引值 Font f = new Font(fonts[findex], 15, FontStyle.Bold);//字体 Brush b = new SolidBrush(c[cindex]);//颜色 int ii = 4; if ((i + 1) % 2 == 0)//控制验证码不在同一高度 { ii = 2; } g.DrawString(code.Substring(i, 1), f, b, 3 + (i * 12), ii);//绘制一个验证字符 } ms = new MemoryStream();//生成内存流对象 Img.Save(ms, ImageFormat.Jpeg);//将此图像以Png图像文件的格式保存到流中 //回收资源 g.Dispose(); Img.Dispose(); return ms; } } 新建一个页面VerifyCodeImage.aspx共前台调用using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class VerifyCodeImage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string verifyCode = String.Empty; MemoryStream memoryStream = VerifyCode.CreateImage(out verifyCode); Response.ContentType = "image/jpeg"; Response.Cookies.Add(new HttpCookie("VerifyCode", verifyCode)); Response.BinaryWrite(memoryStream.ToArray()); } }调用页面<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent"> <img src="/VerifyCodeImage.aspx" id="verifyCode"/> </asp:Content>实现验证实现验证也很简答,把验证码写入cookie,用户点击登陆的时候只需要与cookie的值进行比较即可。
2018年03月10日
1,088 阅读
0 评论
1 点赞
2018-03-10
使用Request获取浏览器以及操作系统信息
string name = Request.Browser.Browser; string type = Request.Browser.Type; string version = Request.Browser.Version; string os = Request.Browser.Platform; string isSupportFramework = Request.Browser.Frames.ToString(); string isSupportTable = Request.Browser.Tables.ToString(); string isSupportCookie = Request.Browser.Cookies.ToString(); string strInfo = name + "<br/>" + type + "<br/>" + version+"<br/>"+os+"<br/>"+isSupportFramework; Response.Write(strInfo);
2018年03月10日
1,284 阅读
0 评论
0 点赞
2018-03-10
由于先前已在此页中指定了另一种语言(或者由 CodeFile 特性暗示),因此无法使用“javascript”。
其实我没学过Asp.Net,之前一直都是html的,最近公司一直再用aspx的东西,所以特地学习以下。错误代码如下<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script language="javascript" type="text/javascript" runat="server"> function btnRed_onClick() { form1.style.backgroundColor = "Red"; } </script> </head> <body> <form id="form1" runat="server"> <div> <input type="button" value="red" onclick="return btnRed_onClick()" /> </div> </form> </body> </html> 解决方法去掉<script language="javascript" type="text/javascript" runat="server">中的runat="server"因为<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="_Default" %>指定了在服务器端执行的是C#语言,<script language="javascript" type="text/javascript" runat="server">想在服务器端执行,显然是不行的。
2018年03月10日
1,114 阅读
0 评论
0 点赞
2018-03-09
C#创建IIS站点
利用IIS7自带类库管理IIS现在变的更强大更方便,而完全可以不需要用DirecotryEntry这个类了(网上很多.net管理iis6.0的文章都用到了DirecotryEntry这个类 ),Microsoft.Web.Administration.dll位于IIS的目录(%WinDir%\System32\InetSrv)下,使用时需要引用,它基本上可以管理IIS7的各项配置。这个类库的主体结构如下:前端代码 <%@ Page Title="IIS管理" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Manager.aspx.cs" Inherits="IISManager.Ide.Net.Cn.Manager" %> <asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server"> <h2><%:Page.Title %></h2> <asp:Panel CssClass="panel panel-default" runat="server"> <div class="panel-body"> <asp:Label runat="server" CssClass="control-label">网站IP</asp:Label><asp:TextBox CssClass="form-control" Width="100%" runat="server" ID="txtIP" ClientIDMode="Static" ToolTip="网站名称">localhost</asp:TextBox> <br /> <asp:Label runat="server" CssClass="control-label">网站名称</asp:Label><asp:TextBox CssClass="form-control" Width="100%" runat="server" ID="txtSiteName" ClientIDMode="Static" ToolTip="网站名称">test</asp:TextBox> <br /> <asp:Label runat="server" CssClass="control-label">物理路径</asp:Label><asp:TextBox CssClass="form-control" Width="100%" runat="server" ID="txtPath" ClientIDMode="Static" ToolTip="网站路径">c:\test</asp:TextBox> <br /> <asp:Label runat="server" CssClass="control-label">端口</asp:Label><asp:TextBox CssClass="form-control" Width="100%" runat="server" ID="txtPort" ClientIDMode="Static" ToolTip="网站端口">1234</asp:TextBox> <br /> <asp:Button ID="btnAdd" EnableViewState="false" UseSubmitBehavior="false" runat="server" Text="提交" CssClass="btn btn-default" OnClick="btnAdd_Click"></asp:Button> </div> </asp:Panel> </asp:Content>后台代码using Microsoft.Web.Administration; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace IISManager.Ide.Net.Cn { public partial class Manager : Page { string ip = string.Empty; protected void Page_Load(object sender, EventArgs e) { if (!ConfigurationManager.AppSettings.AllKeys.Contains("IP")) { Response.Write("<script>alert('config文件配置不正确')</script>"); Response.Write(" <script> window.close(); </script> "); return; } ip = ConfigurationManager.AppSettings["IP"]; if (string.IsNullOrEmpty(ip)) { Response.Write("<script>alert('请配置IP地址')</script>"); Response.Write(" <script> window.close(); </script> "); return; } } protected void btnAdd_Click(object sender, EventArgs e) { try { string siteName = txtSiteName.Text.Trim(); int port = Convert.ToInt32(txtPort.Text.Trim()); string path = txtPath.Text.Trim(); FileInfo fi = new FileInfo(path); if ((fi.Attributes & FileAttributes.Directory) != 0) { } else { Response.Write("<script>alert('文件路径无效')</script>"); } ServerManager sm = ServerManager.OpenRemote(this.txtIP.Text.Trim()); //创建应用程序池 //先检测是否存在,如果存在不进行操作 //如果创建的应用程序池已经存在,系统不会进行创建 ApplicationPool appPool = sm.ApplicationPools.FirstOrDefault(x => x.Name == siteName); if (appPool != null) { sm.ApplicationPools.Remove(appPool); } appPool = sm.ApplicationPools.Add(siteName); appPool.AutoStart = true;//是否自动启动,true代表创建完成后自动启动 appPool.Enable32BitAppOnWin64 = false;//启动32位支持 appPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;//托管管道模式Integrated = 0, Classic = 1 appPool.ManagedRuntimeVersion = "v4.0";//版本 appPool.QueueLength = 10000;//队列长度,如果操作限制将显示503 appPool.Recycling.PeriodicRestart.Time = new TimeSpan(0, 5, 0);//固定回收时间 appPool.ProcessModel.IdleTimeout = new TimeSpan(0, 5, 0);//5分钟闲置超时 appPool.ProcessModel.MaxProcesses = 1;//最大进程数 appPool.ProcessModel.PingingEnabled = true;//是否允许ping appPool.ProcessModel.PingInterval = new TimeSpan(0, 0, 40);//ping间隔 appPool.ProcessModel.PingResponseTime = new TimeSpan(0, 0, 10);//ping最大相应时间 10秒 appPool.ProcessModel.ShutdownTimeLimit = new TimeSpan(0, 0, 50);//关闭时间限制 appPool.ProcessModel.StartupTimeLimit = new TimeSpan(0, 0, 50);//启动时间限制 //创建站点 Site site = sm.Sites.FirstOrDefault(x => x.Name == siteName); if (site != null) { sm.Sites.Remove(site); } site = sm.Sites.Add(siteName, path, port); site.ServerAutoStart = true;//自动启动 Application root = site.Applications["/"]; root.ApplicationPoolName = appPool.Name;//设置应用程序池 site.Bindings[0].EndPoint.Port = port;//终点端口号 site.Limits.MaxBandwidth = 2000000;//最大带宽 site.Limits.MaxConnections = 1000;//最大连接数 site.LogFile.Directory = path + "\\log";//日志文件路径 site.LogFile.Enabled = true;//开启日志 site.LogFile.LogExtFileFlags = LogExtFileFlags.Date;//日志文件形式 site.LogFile.LogFormat = LogFormat.Custom;//日志格式 site.LogFile.Period = LoggingRolloverPeriod.Hourly;//日志文件记录时间间隔 site.LogFile.TruncateSize = 1048577;//日志文件截取大小 site.TraceFailedRequestsLogging.MaxLogFiles = 100;//失败请求最大跟踪日志数量 site.TraceFailedRequestsLogging.Directory = path + "\\tracelog";//失败请求日志路径 site.TraceFailedRequestsLogging.Enabled = true;//启用失败请求跟踪 //site.SetAttributeValue("preloadEnabled", true);//启用预加载 sm.CommitChanges(); Response.Write("<script>alert('创建成功')</script>"); } catch (Exception ex) { Response.Write("<script>alert('创建失败,请检查输入先是否正确')</script>"); } } } }配置文件<?xml version="1.0"?> <!-- 有关如何配置 ASP.NET 应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <!-- 有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。 可在 <httpRuntime> 标记上设置以下特性。 <system.Web> <httpRuntime targetFramework="4.6.1" /> </system.Web> --> <appSettings> <add key="SiteName" value="IIS管理系统"/> <add key="IP" value="58.87.77.174"/> </appSettings> <system.web> <identity impersonate="true" userName="administrator" password="123456"/> <compilation debug="true" targetFramework="4.6.1"/> <httpRuntime/> <pages controlRenderingCompatibilityVersion="4.0"> <namespaces> <add namespace="System.Web.Optimization"/> </namespaces> <controls> <add assembly="Microsoft.AspNet.Web.Optimization.WebForms" namespace="Microsoft.AspNet.Web.Optimization.WebForms" tagPrefix="webopt"/> </controls> </pages> <httpModules> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web"/> </httpModules> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/> <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="WebGrease" culture="neutral" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/> </dependentAssembly> </assemblyBinding> </runtime> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="ApplicationInsightsWebTracking"/> <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler"/> </modules> </system.webServer> <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/> </compilers> </system.codedom> </configuration>温馨提示配置文件主要是identity节点,配置登陆用户
2018年03月09日
1,342 阅读
0 评论
1 点赞
2018-03-09
win10 hyper-v与vbox不兼容
生命在于折腾 之前在PC上一直使用的都是VBox以及VMWare,其实我个人更喜欢VMWare,但是项目上都在使用vbox,所以我也只能使用vbox。今天心血来潮,想着试一下win10自带的hyper-V,然后就安装上了。因为之前又安装的vbox,我也没有卸载,使用hyper-v倒是没有什么问题,但是但我打开虚拟机的时候,系统接着蓝屏了,一开始其实还没想到是hyper-v与vbox不兼容,结果试了三遍,都是一打开vbox,接着就蓝屏,所以基本可以肯定vbox与win10自带的hyper-v是不兼容的。处理其实也没想着什么解决办法,直接把hyper-v卸载掉,然后就好了。
2018年03月09日
1,327 阅读
0 评论
0 点赞
2018-03-06
easyui tab关闭方法
easyui窗体关闭$("#id").tabs('close', 'title');或者$("#id").tabs('close', 'index');第一个方法,可以传递title,也就是页签的标题进行删除,第二个参数可以传递标签的index,也就是索引。通过title关闭标签通过title的方式关闭还是非常简单的。window.parent.$("#mainTab").tabs('close', '影像待办'); 通过index关闭页签我们首先获取到当前的页签,通过页签获取到index,然后通过index进行关闭。var tab = window.parent.$('#mainTab').tabs('getSelected');//获取当前选中tabs var index = window.parent.$('#mainTab').tabs('getTabIndex', tab);//获取当前选中tabs的index window.parent.$('#mainTab').tabs('close', index);//关闭对应index的tabs
2018年03月06日
1,776 阅读
0 评论
1 点赞
1
...
41
42
43
...
53