All posts by 龙生
Asp.Net Core 发布和部署(Linux + Jexus )
前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在 asp.net core 中对我们的已经完成的程序进行发布和部署。 有关如何使用 Nginx 进行部署,请参见本人的另一篇文章: http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html 目录 安装 Liunx DotNet 环境 新建一个 Web 项目,并发布 使用 Jexus 进行反向代理 安装 Linux DotNet 环境 安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core#ubuntu。 新建一个 WebApp 项目,并发布 在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序,然后使用dotnet resotre还原 Nuget。 主要是用以下几个命令: mkdir HelloWebApp 这个命令是创建一个名为 HelloWebApp 的文件夹。 dotnet new -t Web 这个命令是使用 Web 模板来新建一个 WebApp 的 Mvc 应用程序。 新建了应用程序之后,使用dotnet restore 和 dotnet run 命令来测试一下我们的应用程序。 我们打开浏览器输入 http://localhost:5000,来看一下效果。 可以看到已经成功运行了。 如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-f|--framework <FRAMEWORK> Target framework to compile for -r|--runtime <RUNTIME_IDENTIFIER> Target runtime to publish for -b|--build-base-path <OUTPUT_DIR> Directory in which to place temporary outputs -o|--output <OUTPUT_PATH> Path in which to publish the app --version-suffix <VERSION_SUFFIX> Defines what `*` should be replaced with in version field in project.json -c|--configuration <CONFIGURATION> Configuration under which to build --native-subdirectory Temporary mechanism to include subdirectories from native assets of dependency packages in output --no-build Do not build projects before publishing |
我们运行dotnet publish -o ~/WorkSpace/publish 发布到 publish 文件夹,当看到Published 1/1 projects successfully的时候,说明已经发布成功了。 PS: 如果提示没有安装 NPM 工具,运行sudo install apt-get npm -g,先安装 NPM。 如果提示没有 […]
View DetailsAsp.Net Core 发布和部署( MacOS + Linux + Nginx )
前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署。 有关如何在 Jexus 中进行部署,请参见本人的另一篇文章: http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html 目录 新建一个 WebApp 项目 发布到 Linux,Mac OS 使用 Nginx 进行反向代理 新建一个 WebApp 项目 在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序。 以下是我在 Mac 中的截图: 主要是用以下几个命令: mkdir HelloWebApp 这个命令是创建一个名为 HelloWebApp 的文件夹。 dotnet new -t Web 这个命令是使用 Web 模板来新建一个 WebApp 的 Mvc 应用程序。 新建了应用程序之后,使用dotnet restore 和 dotnet run 命令来测试一下我们的应用程序。 可以看到已经成功运行了。 我们打开浏览器输入 http://localhost:5000,来看一下效果。 ps: Safari 下面,浏览器地址栏看不到端口号,实际上是5000端口。 发布到 Linux,Mac OS 如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
-f|--framework <FRAMEWORK> Target framework to compile for -r|--runtime <RUNTIME_IDENTIFIER> Target runtime to publish for -b|--build-base-path <OUTPUT_DIR> Directory in which to place temporary outputs -o|--output <OUTPUT_PATH> Path in which to publish the app --version-suffix <VERSION_SUFFIX> Defines what `*` should be replaced with in version field in project.json -c|--configuration <CONFIGURATION> Configuration under which to build --native-subdirectory Temporary mechanism to include subdirectories from native assets of dependency packages in output --no-build Do not build projects before publishing |
我们直接运行dotnet publish 使用默认的发布路径,当看到Published 1/1 projects successfully的时候,说明已经发布成功了。 接着进入到 bin 文件夹下的Debug 文件夹下的netcoreapp1.0 文件夹,然后会看到有一个 publish 的文件夹。这就是默认发布生成的文件夹,在这个文件夹中可以看到我们程序所有依赖的程序集文件。 发布之后 publish 文件夹里面的子文件夹有必要说明一下。
1 2 3 4 5 |
appsettiong.json 应用程序的配置文件 refs 应用程序引用的.net fx系统程序集 runtimes 运行时环境,可以看到里面的文件夹包含 win7、linxu,mac os 等,说明我们这个应用程序是跨平台的。 views 这个文件夹存放的就是我们的 mvc 的视图文件。 wwwroot 文件夹,存放的是前端使用的 js 库,css 样式表,和图片等。 |
然后我们把工作目录切换到发布的 publish 文件夹。使用dotnet […]
View DetailsASP.NET Core 文件上传
前言 上篇博文介绍了怎么样在 asp.net core 使用 Redis 和 Protobuf 进行 Session缓存。本篇的是开发过程中使用的一个小功能,怎么做单文件和多文件上传。 如果你觉得对你有帮助的话,不妨点个【推荐】。 目录 单文件上传 多文件上传 示例源码 单文件上传 上传文件在Web应用程序中是一个常见的功能。在asp.net core中上传文件并保存在服务器上,是很容易的。下面就来演示一下怎么样在 ASP.NET Core项目中进行文件上传。 首先,创建一个 asp.net core 项目,然后在Controller文件件添加一个HomeController,然后在 Views 文件夹的 Home 文件夹里添加一个 New.cshtml 视图文件。如下图: 添加一个 UserViewModel.cs在 Model 文件夹中 , 代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class UserViewModel { [Required] [Display(Name = "姓名")] public string Name { get; set; } [Required] [Display(Name = "身份证")] [RegularExpression(@"^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$", ErrorMessage = "身份证号不合法")] public string IdNum { get; set; } public string IdCardImgName { get; set; } [Required] [Display(Name = "身份证附件")] [FileExtensions(Extensions = ".jpg,.png", ErrorMessage = "图片格式错误")] public IFormFile IdCardImg { get; set; } } |
然后添加一个 New.cshtml 视图文件在 Views 文件夹中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@model UserViewModel <form asp-controller="Home" role="form" asp-action="New" enctype="multipart/form-data" method="post"> <div class="form-group"> <label asp-for="Name"></label> <input type="text" class="form-control" asp-for="Name" /> </div> <div class="form-group"> <label asp-for="IdNum"></label> <input type="text" class="form-control" asp-for="IdNum" /> </div> <div class="form-group"> <label asp-for="IdCardImg"></label> <input type="file" asp-for="IdCardImg" /> <p class="help-block">上传。</p> </div> <button type="submit" class="btn btn-default">提交</button> </form> |
在 HomeController 中,添加页面对应的 Action 方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[HttpPost] public IActionResult New([FromServices]IHostingEnvironment env, [FromServices]AppDbContext dbContext, UserViewModel user) { var fileName = Path.Combine("upload", DateTime.Now.ToString("MMddHHmmss") + ".jpg"); using (var stream = new FileStream(Path.Combine(env.WebRootPath, fileName), FileMode.CreateNew)) { user.IdCardImg.CopyTo(stream); } var users = dbContext.Set<User>(); var dbUser = new User() { Name = user.Name, IdCardNum = user.IdNum, IdCardImgName = fileName }; users.Add(dbUser); dbContext.SaveChanges(); return RedirectToAction(nameof(Index)); } |
运行程序,查看表单: 多文件上传 多文件上传和单文件上传类似,表单的 ViewModel 使用 ICollection<IFromFile> ,然后表单的<input type="file" asp-for="IdCardImg" mulpitle /> 添加上mulpitle就可以了(只支持 H5)。 示例源码 注:示例数据存储使用的 Sqlite ,Code First方式生成数据库。 示例代码已经上传至 github: https://github.com/yuleyule66/AspNetCoreFileUpload 本文地址:http://www.cnblogs.com/savorboard/p/5599563.html 作者博客:Savorboard 欢迎转载,请保留出处
View DetailsDotNet Core 介绍
前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章来帮助那些还在学习的朋友们吧。 目录 dotnet core 和 .net的区别 github中dotnet core各个项目的状况 一、 dotnet core 和 .net的区别 目前在使用C#开发应用程序的时候,有两种框架可供选择: .Net Framework 和 .Net Core,那他们有什么不同的地方呢?或者说是微软为什么要做两个框架,在同一个平台上运行不好吗?就先让我们一起看看他们之间的不同。 大家都知道 .Net Core是跨平台的,除了运行在windows上之外,还可以运行在Linux和Mac OS上。而 .Net Framework只能运行在windows上或者借助于Mono运行于其他平台上。 .Net Core和 .Net Framework可以理解为一个子集和父集的关系,之所以 .Net Core带了个Core是因为它包含了 .Net Framework的一些核心的功能和特性,比如它们共享GC (Garbage Collection,垃圾收集,垃圾回收),jit(Just-In-Time )编译器,还有类型系统和语言特性等。 那么 asp.net 和 asp.net core 的区别呢? asp.net 目前的版本是asp.net 4.6,它已经被使用了很多年了,它比较稳定,如果你的系统不需要跨平台,只是在windows上运行的话,可以使用asp.net 4.6, 它很稳定并且很多第三方库都对其进行了支持。 asp.net core 是采用了 .net core的新一代asp.net架构程序。目前的版本是RC2。后面会对其进行大量介绍。 下面这张图就是他们之间的关系: 二、 github中dotnet core各个项目的状况 有一点值得我们开发者高兴的是,现在微软 .net 相关的大多数项目都是开源的,托管在github上,我建议大家有不懂的地方多去查看源代码,来了解其中的运行原理,以便于对知识的更好的理解和吸收。 .NET Compiler Platform ("Roslyn") .NET编译器。提供的开源Csharp和Visual Basic编译器及代码解析API .NET Core Framework 也被叫做CoreFx,提供Core的基础程序集类库,它包括collections, file systems, console, XML, async等. .NET Core Runtime 也被叫做CoreCLR,它包括了 .net core的runtime(运行时),和mscorlib(基础库),它包含的有GC(垃圾回收),JIT(just-in-time)编译器, 类型系统(.NET data types),和其他一些底层的类库。 […]
View DetailsCentos7 关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1、直接关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2、设置 iptables service yum -y install iptables-services 如果要修改防火墙配置,如增加防火墙端口3306 vi /etc/sysconfig/iptables 增加规则 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 保存退出后 systemctl restart iptables.service #重启防火墙使配置生效 systemctl enable iptables.service #设置防火墙开机启动 最后重启系统使设置生效即可。 from:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html
View DetailsDocker 容器镜像删除
1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q) 2.查看当前有些什么images docker images 3.删除images,通过image的id来指定删除谁 docker rmi <image id> 想要删除untagged images,也就是那些id为<None>的image的话可以用 docker rmi $(docker images | grep "^<none>" | awk "{print $3}") 要删除全部image的话 docker rmi $(docker images -q) from:http://www.cnblogs.com/q4486233/p/6482711.html
View Details在Docker上运行Asp.Net Core
dotnet的镜像:https://hub.docker.com/r/microsoft/dotnet/,如下图: 下面就演示一下怎么跑一下示例程序,用意是抛砖引玉。 1.首先拉一下镜像:docker pull microsoft/dotnet;命令在仓库首页的右上角。下载慢的同学可以使用阿里的加速器。 2.用官方的例子创建镜像:
1 2 3 4 5 6 7 |
docker run -p 8000:80 -e "ASPNETCORE_URLS=http://+:80" -it --rm microsoft/dotnet [now in the container] mkdir app cd app dotnet new mvc dotnet restore dotnet run |
退出容器用exit命令。以上命令创建的是一个临时镜像,当然你想创建持久化的镜像可以把“--rm”删除。 3.运行过以上命令,这时访问宿主的8000端口就可以访问Asp.Net Core的示例网站了;结果如图:
View DetailsMySQL字符串的‘123’转换为数字的123
1 2 3 4 5 |
方法一:SELECT CAST('123' AS SIGNED); 方法二:SELECT CONVERT('123',SIGNED); 方法三:SELECT '123'+0; from:<a href="http://www.cnblogs.com/emanlee/p/5998683.html">http://www.cnblogs.com/emanlee/p/5998683.html</a> |
PDO
PDO一是PHP数据对象(PHP Data Object)的缩写。 并不能使用PDO扩展本身执行任何数据库操作,必须使用一个database-specific PDO driver(针对特定数据库的PDO驱动)访问数据库服务器。 PDO并不提供数据库抽象,它并不会重写SQL或提供数据库本身缺失的功能,如果你需要这种功能,你需要使用一个更加成熟的抽象层。 PDO需要PHP5核心OO特性的支持,所以它无法运行于之前的PHP版本。
View DetailsLDAP
LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。
View Details