首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,590 阅读
2
Mac打印机设置黑白打印
4,903 阅读
3
修改elementUI中el-table树形结构图标
4,874 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,654 阅读
5
intelliJ Idea 2022.2.X破解
4,333 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
.Net
Spring Cloud Alibaba
MySQL
Mybatis-Plus
Typecho
jQuery
Java Script
微信小程序
Oracle
Laughing
累计撰写
618
篇文章
累计收到
1,419
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
618
篇与
的结果
2017-09-18
解决火狐浏览器英文+中文组合下载文件名不全的问题
今天在处理文件下载的时候,在IE下面没问题,但是火狐下面只显示文件名的的英文部分,丢失了中文部分以及文件扩展名。其实解决办法是很简单的,配置Content-disposition时采用下面的方法。response.setHeader("Content-disposition","attachment;filename=\"" + fileName + "\"");温馨提示设置response的Content-disposition项时,filename的值要加上双引号,如果不加双引号,在Firefox下载文件时,如果文件名是英文+中文的组合,比如:YXLM英雄联盟.docx,这个文件在Firefox下载时,下载下来的文件名只有YXLM了。只有加了双引号后,文件名才和代码设置的文件名一致。因为这个双引号是在字符串里,所需需要加反斜杠\来进行转义。
2017年09月18日
1,195 阅读
0 评论
0 点赞
2017-09-18
ASP.NET Core读取XML文件
ASP.NET Core中,默认应用程序的配置是json文件,如果我们需要读取xml文件,是否也可以呢?答案是肯定的。其实读取xml文件的方式,跟读取json的方式基本是一样的,都可以通过Configuration读取。定义XML文件首先,我们定义个XML文件,这里我们命名为appsettings.xml,具体的内容如下:<?xml version="1.0" encoding="UTF-8" ?> <AppConfig> <WebSite> <Url des="网址">lisen.cc</Url> <Email>admin@lisen.org</Email> </WebSite> </AppConfig>修改配置文件程序如果不配置,默认读取的是appsettings.json或者appsettings.Development,我们需要修改程序,读取xml的配置文件。打开program.cs文件,修改内容如下using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Builder; namespace Study.WebUI { public class Program { public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseConfiguration(new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddXmlFile("appsettings.xml").Build()) .UseKestrel(options => { options.Limits.MaxConcurrentConnections = 1024; options.Limits.MaxRequestBodySize = 10 * 1024; }) .Build(); } }安装Nuget包为了读取xml文件,我们需要安装Microsoft.Extensions.Configuration.Xml使用以下代码分别演示读取xml节点的属性以及值得方法app.Use(async (context,next) => { Console.WriteLine("网址:"+Configuration["WebSite:Url:des"]);//读取属性 Console.WriteLine("邮箱:"+Configuration["WebSite:Email"]);//读取节点内容 await next.Invoke(); });温馨提示读取xml不需要最外层跟节点,否则会返回null
2017年09月18日
1,707 阅读
0 评论
2 点赞
2017-09-05
ASP.NET CORE中URL的重写和重定向
URL的重写和重定向我们还是比较经常用的,不管我们做301跳转还是防盗链亦或是进行SEO,我们都经常使用到URL的重写或者重定向。我本人也是做ERP的,所以业务系统使用的这些功能相对来说比较少,我也只是参考https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/url-rewriting?tabs=aspnetcore2x进行学习,有不足的地方大家多多指教。重定向不管是重定向还是重写,我们都需要在startup.cs中调用UseRewriter()中间件。UseRewriter()方法需要一个RewriteOptions参数,这个类位于Microsoft.AspNetCore.Rewrite命名空间。我们按照如下方式配置重定向,第一个参数是正则表达式,第二个是要跳转的位置,第三个是跳转状态,默认是302,这里我们可以改成301var options = new RewriteOptions() .AddRedirect(@"index/(\d+)", "https://lisen.cc/", 301); app.UseRewriter(options);这样配置按成后,所有方位/index/*下面的地址都讲跳转到我的博客地址。同样的,我们可以通过.AddRedirectToHttps(301,443)讲http跳转到https,第一个是状态,一般使用301永久跳转,第二个是https的端口号。也可以通过.AddRedirectToHttpsPermanent()通过301跳转到443端口重写.AddRewrite(@"^index1/(\d+)", "https://lisen.cc/", skipRemainingRules: true);方法是实现URL重写,第一个参数同样是正则表达式,第二个是要跳转的位置,第三个参数代表是否忽略其他的规则。通过读取Apache配置文件实现重写通过.AddApacheModRewrite(apacheModRewriteStreamReader);可以读取Apache的伪静态规则首先,我们需要创建一个Apache的伪静态规则的txt文件ApacheModRewrite.txt \# Rewrite path with additional sub directory RewriteRule ^/apache-mod-rules-redirect/(.*) https://lisen.cc/ [L,R=302]然后配置startup.cs,如下 using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt")) using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.txt")) { var options = new RewriteOptions() //.AddRedirect("index1/(.*)","https://lisen.cc/",301) .AddApacheModRewrite(apacheModRewriteStreamReader); //.AddRewrite(@"^index1/(\d+)", "https://lisen.cc/", skipRemainingRules: true); app.UseRewriter(options); }IIS重写配置文件iisUrlRewrite.xml如下<rewrite> <rules> <rule name="Rewrite segment to id querystring" stopProcessing="true"> <match url="^iis-rules-rewrite/(.*)$" /> <action type="Rewrite" url="https://lisen.cc/" appendQueryString="false"/> </rule> </rules> </rewrite> using(StreamReader apacheModRewriteStreamReader=new StreamReader("ApacheModRewrite.txt")) using(StreamReader iisUrlRewriteStreamReader=new StreamReader("iisUrlRewrite.xml")) { var options = new RewriteOptions() //.AddRedirect("index1/(.*)","https://lisen.cc/",301) .AddIISUrlRewrite(iisUrlRewriteStreamReader) .Add(RewriteMapSegment; //.AddRewrite(@"^index1/(\d+)", "https://lisen.cc/", skipRemainingRules: true); app.UseRewriter(options); }
2017年09月05日
1,522 阅读
0 评论
0 点赞
2017-09-04
ASP.NET Core Razor 页面路由
在服务器端 Web 应用程序框架中,其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配,以便正确的处理请求。最简单的方法是将 URL 映射到磁盘上的物理文件,在 Razor 页面框架中,ASP.NET团队就是这样实现的。关于 Razor 页面框架如何将 URL 与文件相匹配,有一些规则您必须了解,以及如何根据需要自定义规则改变输出的结果。如果您将 Razor 页面与 Web Form 框架进行比较,您还需要了解取代的 Url参数以及在URL中传递数据的机制。规则一,Razor 页面需要一个根目录。默认情况下,该根目录是 Pages,位于Web应用程序项目的根目录中。您可以在Startup类的ConfigureServices方法中配置其它文件夹作为根目录。以下是将根目录更改为位于应用程序 “Content” 文件夹:public void ConfigureServices(IServiceCollection services) { services .AddMvc(). AddRazorPagesOptions(options => { options.RootDirectory = "/Content"; }); }规则二,URL映射到Razor页面,URL不包含文件扩展名。规则三,“Index.cshtml”是一个默认文档,这意味着如果URL中缺少文件名,该请求将被映射到指定文件夹中的“Index.cshtml”。URL传递参数就像大多数其它框架一样,参数可以作为查询字符串在 URL 中传递,例如:www.domain.com/product?id=1;或者,您可以将其作为路由参数传递,因此上述示例将变为www.domain.com/product/1。URL的一部分必须映射到参数名称,在页面的路由模板来实现的,@page指令的一部分:@page "{id:int}"该模板告诉框架将页面名称之后URL的第一段作为“id”的路由参数。您可以通过多种方式访问路由参数的值。第一个是使用RouteData字典:@page "{id}" { var productId = RouteData.Values["id"]; }或者,您可以向该页面的OnGet()方法添加与路由参数相同名称的参数,并将其值分配给公共属性:@page "{id}" @{ @functions{ public int Id { get; set; } public void OnGet(int id) { Id = id; } } } <p>The Id is @Id</p>如果您使用的是PageModel,那么是这样实现的:using Microsoft.AspNetCore.Mvc.RazorPages; namespace RazorPages.Pages { public class ProductModel : PageModel { public int Id { get; set; } public void OnGet(int id) { Id = id; } } } @page "{id}" @model ProductModel <p>The Id is @Model.Id</p>最后,您可以在公有属性使用BindProperty特性,并省略该OnGet方法中的参数。Razor 文件内容保持不变,但是PageModel代码略有更改:using Microsoft.AspNetCore.Mvc.RazorPages; namespace RazorPages.Pages { public class ProductModel : PageModel { [BindProperty(SupportsGet = true)] public int Id { get; set; } public void OnGet() { } } }约束此外,在此示例中参数的约束是它必须有一个值。URL www.domain.com/product/apple与www.domain.com/product/21一样有效,都是可以与路由匹配。如果您希望id值为整数,则可以通过将数据类型添加到模板来指定约束:@page "{id:int}"现在,如果您尝试通过“apple”作为参数值,应用程序将返回404 Not Found状态码。您可以指定值不是必需的,可以将参数设置为可为空类型:@page "{id:int?}"如果您的应用程序允许使用“apple”作为参数值,则可以指定只允许使用A-Z和a-z的字符:@page "{id:alpha}"您可以与最小长度要求相结合:@page "{id:alpha:minlength(4)}"更多的约束信息,可以查看[url href='https://docs.microsoft.com/en-us/aspnet/core/fundamentals/routing#route-constraint-reference']微软文档[/url]
2017年09月04日
1,650 阅读
0 评论
3 点赞
2017-08-13
《ASP.NET Core跨平台开发从入门到实战》读书感
编程类的书籍真的不推荐国内作者写的可能有些人会觉得我比较偏激,甚至崇洋媚外。其实我觉得我看书算是比较多的了,每天下班回到家,基本上会留给自己1~2个小时的学习时间,当然这不光是看书,有时候也浏览一下博客或逛逛论坛。其实,我们买过很多书籍,当然绝大多数都是国外作者写的一写行业里面比较出名的书籍。国内的也买过几本,但是说实在的,基本上没看过几页就不看了,对于国内的一些书籍,我是觉得存在一下问题:很少有作者自己的理解,内容要么是抄的国外的一些网站内容或者代码,要么就是直接抄的官方的例子内容缺少阶段性,内容几本都是官方的一些Demo,然后直接翻译过来,内容非常简单,实际项目也很少会用到内容泛泛而谈,或者根本不知所云。有些很重要的东西,作者往往一笔带过文章结构不清晰,到处是错别字,甚至有些代码根本就无法运行其实以上几点,我感觉是国内的这些编程类的书籍普遍存在的问题。为什么要写这篇文章我买书有一个习惯,就是买来书籍,第一时间在书的扉页写上购买日期。写这篇文章的时候,有翻看了一下这本书的购买日期,是今年的5月24日买的,其实刚买来的时候,我看到几天,但是接着就放弃了,其实放弃的原因我总结了一下,无非是一下几点:我认为.Net Core既然是跨平台的,那么我觉得用win或者mac或者linux,对于开发体验应该是一样的或者说,我一个项目拿到任意一个平台都能够直接重新编译运行,但是我想法太幼稚了。我在Mac上面使用Net Core经常会出现各种莫名其妙的错误,但是切换到Win上面,相同的代码完全可以运行,其中给我印象最深刻的就是前几天连接SqlServer数据库,一开始我是没安装openssl的,后来安装上之后,原来的项目仍然无法连接SqlServer,直到我重新新建了一个项目,问题就没在出现。说实在的,虽然到今天为止,这本书距离我购买只过去了三个月,但是里面的好多内容其实都是错误的了。这个其实也归咎于NetCore毕竟是一个新出的东西,代码时刻在进行完善>最后一点放弃的原因,我觉得就是这本书自己的原因了。对于我们绝大多数人而言,对于NetCore这个新事物,接触都不是很深,可能作者自己是个大牛,但是他把我们这些小白很想的都太厉害了。书里面好多潜在的内容,作者都是一带而过的。这样的结果往往导致我们根本无法运行书中的代码。而且书中的语句说实话,我感觉好多我至少得读个三四遍才能明白作者在说啥。结束语现在是晚上12点32分,我现在仍然在阅读这本书,但是我不是单单看这本书,基本上没看到一个章节或者知识点,我都是要去网上搜索一下的,然后结合书上的内容以及网上的内容,真真正正的吃够每一个知识点。
2017年08月13日
1,272 阅读
0 评论
1 点赞
2017-08-09
Mac Visual Studio一个奇葩的bug
最新测试版的,输入字母t,程序就自动退出,无语了
2017年08月09日
1,305 阅读
0 评论
1 点赞
2017-08-08
javascript实现禁止右键菜单
禁止右键菜单弹出,并且不允许选择、复制$(document).bind('contextmenu copy selectstart', function(event) { /* Act on the event */ return false; });
2017年08月08日
1,064 阅读
0 评论
0 点赞
2017-08-08
JS获取文本框选中的值
最近项目上有一个需求,是获取文本框选择的内容的值。这个功能用JS实现其实还是比较简单的,绑定事件,获取对应的文本框值就可以了。绑定事件我们在窗体加载完成后,绑定一个事件mouseup事件$(document).bind("mouseup", function(){ var text = GetSelectedText(); if (!(text == "" || text.indexOf(',') > -1 || text.length != 13)) { alert(text); } });使用function GetSelectedText() { var selText = ""; if (window.getSelection) { // all browsers, except IE before version 9 var sel = document.activeElement; if (sel.id =="BUSSINESSAPP-L-KT" && sel && (sel.tagName.toLowerCase() == "textarea" || (sel.tagName.toLowerCase() == "input" && sel.getAttribute("type").toLowerCase() == "text"))) { var text = sel.value; selText = text.substring( sel.selectionStart, sel.selectionEnd ); } else { var selRange = window.getSelection(); selText = selRange.toString(); } } else { if (document.getSelection) { // all browsers, except IE before version 9 range = document.getSelection(); selText = range.toString(); } else if (document.selection.createRange) { // IE below version 9 var range = document.selection.createRange(); selText = range.text; } } return selText; }
2017年08月08日
1,107 阅读
0 评论
0 点赞
2017-08-06
配置log4net写日志到数据库
前一篇我们介绍了log4net写日志到文件的方法,具体可以参考。配置log4net写日志到文件这一篇我们继续介绍log4net写日志到数据库的方法。数据库创建脚本CREATE TABLE [dbo].[Log]( [Id] [int] IDENTITY(1,1) NOT NULL, [Date] [datetime] NOT NULL, [Thread] [varchar](255) NOT NULL, [Level] [varchar](50) NOT NULL, [Logger] [varchar](255) NOT NULL, [Message] [varchar](4000) NOT NULL, [Exception] [varchar](2000) NULL ) ON [PRIMARY]配置文件修改我们只需要修改配置文件,设置数据库类型、数据库连接信息以及sql语句即可,其他的跟写入文件的方式是相同的<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!--定义输出到数据库中--> <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> <bufferSize value="1" /> <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <connectionString value="server=114.115.214.130;database=lisen;UID=lisen;PWD=19900629;" /> <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value="@log_date" /> <dbType value="DateTime" /> <layout type="log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value="@thread" /> <dbType value="String" /> <size value="255" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%thread" /> </layout> </parameter> <parameter> <parameterName value="@log_level" /> <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="255" /> <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="2000" /> <layout type="log4net.Layout.ExceptionLayout" /> </parameter> </appender> <root> <!--OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL--> <level value="ALL"/> <!--数据库形式记录日志--> <appender-ref ref="AdoNetAppender"/> </root> </log4net> </configuration>
2017年08月06日
1,052 阅读
0 评论
0 点赞
2017-08-06
配置log4net写日志到文件
所有的项目都离不开日志记录功能,log4net是一个功能强大的日志组件,log4net支持将日志写到文件或者写到数据库中。这篇文章,我们主要介绍简单的,将日志写入到文件中。环境安装现在做.net的基本都是使用nuget了吧,安装方法页很简单,直接在nuget包管理器中搜索log4net,然后安装即可。配置文件为了保证项目的整洁性,我们建议将log4net的配置文件,放到单独的config文件中,我们可以将log4net的配置文件,放到网站根目录的log4net.config文件中,config文件配置如下<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> <log4net> <!--定义输出到文件中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="log//"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy-MM-dd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <param name="Encoding" value="utf-8" /> <layout type="log4net.Layout.PatternLayout"> <!--<conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n日志级别: %-5level %n出错类:%logger property: [%property{NDC}] - %n错误描述:%message%newline %n"/>--> <conversionPattern value="%newline %nDate:%date %nThread:[%thread] %nLevel: %-5level %nClass: %logger [%property{NDC}] %nMessage: %message%newline" /> </layout> </appender> <root> <level value="ALL"/> <!--文件形式记录日志--> <appender-ref ref="RollingLogFileAppender"/> </root> </log4net> </configuration>使配置生效我们可以把配置文件放到AssemblyInfo.cs文件中,也可以放到其他在调用日志方法之间的任意一个类的命名空间之上。我这里放到了Gloabal.asax.cs文件中的。using System.Web; using System.Web.Mvc; using System.Web.Routing; [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)] namespace MVCDemo.WebUI { public class Global : HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); } } }使用方法使用方法非常简单,直接初始化ILog接口,然后调用方法写入日志即可log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController)); public ActionResult Index() { log.Warn("test..."); return View (); }
2017年08月06日
1,254 阅读
1 评论
0 点赞
2017-08-03
jquery.validate简单使用
jquery.validate插件可是使我们实现功能各种复杂功能的验证,而且jquery.validate插件使用非常简单插件安装<script src="js/jQuery/jquery-3.2.1.js" type="text/javascript"></script> <script src="js/jQuery/jquery.validate.js" type="text/javascript"></script> <script src="js/jQuery/messages_zh.js" type="text/javascript"></script>使用自带的验证规则jquery.validate自带了很多验证规则,包括是否数字,最大、最小字符长度,以及长度范围、是否邮箱、两个控件值是否相等等等。我们在项目上一般是习惯把验证放到js代码块中,如下是一个简单的用户注册页面的验证规则$(function(){ $("#singnUp").validate({ debug:true,//只验证 不提交表单 rules:{ firstName:{ required:true, minlength:2 }, lastName:{ required:true, maxlength:8 }, userName:{ required:true, minlength:5, maxlength:10 }, pwd:{ required:true, minlength:8, maxlength:20 }, pwd2:{ required:true, minlength:8, equtalTo:"#pwd" }, email:{ required:true, email:true }, zipCode:{ isZipCode:true } }, messages:{ firstName:{ required:"请输入用户姓", minlength:"用户名不能小于两位字符" } } }); }); </script> <style> .error{ color:red; } </style> <form action="" method="get" class="panel-body" id="singnUp"> <fieldset> <legend>用户注册</legend> <p> <label for="firstName">姓</label> <input type="text" id="firstName" name="firstName"/> </p> <p> <label for="lastName">名</label> <input type="text" id="lastName" name="lastName" /> </p> <p> <label for="userName">用户名</label> <input type="text" id="userName" name="userName" /> </p> <p> <label for="password">密码</label> <input type="password" id="pwd" name="pwd" /> </p> <p> <label for="pwd2">重复密码</label> <input type="password" id="pwd2" name="pwd2" /> </p> <p> <label for="email">邮箱</label> <input type="email" id="email" name="email" /> </p> <p> <label for="zipCode">邮政编码</label> <input type="text" id="zipCode" name="zipCode" /> </p> <button type="submit">提交</button> </fieldset> </form>添加自定义验证方法对于不能满足条件的验证,我们还可以添加自己的验证方法,如下:jQuery.validator.addMethod("isZipCode",function(value,element,param){ var tel = /^[0-9]{6}$/; return this.optional(element) || (tel.test(value)) },'请输入正确的邮政编码'); 然后在验证规则中调用isZipCode:true就可以了其他一些属性在我们调试的过程中,常常是希望只触发验证条件,但是不提交表单,那么我们可以设置isDebug:true就可以了未完待续。。。。。。
2017年08月03日
1,115 阅读
0 评论
1 点赞
2017-08-03
LNMP设置MySql远程访问
LNMP安装完成后,默认是不允许远程进行访问的,如果使用Navicat等软件连接时,会提示 “2003 不能连接MySql服务器“XXXXXX”(10061)”这样一个错误。如果希望远程连接MySQL,可以通过如下方式设置设置MySQL远程访问首先需要自己在phpmyadmin里添加一个用户 主机为 % 的任意主机(也可以编辑已有的用户)并且iptables 里删除DROP 3306端口的规则iptables 删除端口方法查看已有的iptables规则,以序号显示 iptables -L -n --line-numbers删除对应的DROP规则 iptables -D INPUT 6
2017年08月03日
1,749 阅读
0 评论
1 点赞
1
...
45
46
47
...
52