微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们将运行在 Linux 上的示例站点( about.cnblogs.com )从 .NET Core 1.1 Preview 1 升级到了 .NET Core 1.1. 升级很简单,首先在 Linux Ubuntu 服务器上安装包含 .NET Core 1.1 的 SDK: sudo apt-get…
北京时间6月28日凌晨,微软发布了 .NET Core 1.0,详见新闻 .NET Core 1.0 正式发布了 ,ASP.NET Core 1.0 也随之一起发布了. 紧跟这次发布,我们将跑在 Linux 服务器上的基于 ASP.NET Core RC2 的示例站点  about.cnblogs.com 进行了升级. 首先修改 NuGet.Config,删除下面的配置: <add key="ASP.NET RC2" value="https://www.myget.o…
ASP.NET Core RC2 终于发布了( Announcing ASP.NET Core RC2 ).为了庆祝这次发布,我们将运行在 Ubuntu 服务器上的示例站点 about.cnblogs.com 升级到了 ASP.NET Core RC2 ,在这篇博文中分享一下我们在升级过程中遇到的问题. 一.安装.NET Core SDK 删除旧版 dotnet cli: rm -rf /usr/share/dotnet 安装 .NET Core SDK: curl -sSL https://r…
终于将“.NET跨平台之旅”的示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 ,经历了不少周折,在这篇博文中记录一下. 从 ASP.NET 5 到 ASP.NET Core 最大的变化,除了改名之外,就是用 dotnet cli(命令名是dotnet)取代了dnx.所以运行 ASP.NET Core 程序,首先要安装 dotnet cli,我们是在 Ubuntu 服务器上用 apt-get install dotnet 命令…
9月2日,微软发布了ASP.NET 5 Beta7(详见Announcing Availability of ASP.NET 5 Beta7).其中最大的亮点是dnx已经可以完全基于CoreCLR运行,也就是在Mac/Linux上运行dnx无需再借助Mono,而之前必须安装Mono,才能运行dnu restore安装nuget包包. 我们的ASP.NET 5跨平台示例站点 about.cnblogs.com 之前是跑在 ASP.NET 5 Beta5 上的(详见借助ASP.NET 5 Beta5…
今天,我们将示例站点(about.cnblogs.com,服务器操作系统是Ubuntu)从ASP.NET 5 Beta7升级到了RC1,在升级过程中只遇到了一个问题. 在运行 dnvm upgrade -r coreclr -u 命令,将dnx升级至1.0.0-rc1-15838之后,运行 dnx kestrel 命令无任何输出,站点也没能运行起来. 运行 export DNX_TRACE=1 命令之后,再次运行dnx命令,出现如下的错误信息: Loaded module: dnx.corecl…
今天微软发布了 .NET Core 1.1 Preview 1(详见 Announcing .NET Core 1.1 Preview 1 ),紧跟 .NET Core 前进的步伐,我们将示例站点 http://about.cnblogs.com/about/intro 升级到了 .NET Core 1.1 Preview 1 ,在这篇博文中分享一下升级过程. 部署示例站点的服务器是 Linux Ubuntu 14.04 ,已安装 .NET Core 1.0.1 ,安装位置是 /usr/shar…
在前一篇博文(增加文件日志功能遇到的挫折)中,我们遇到了这样一个问题:虽然有一些.NET日志组件(比如Serilog, NLog)已经开始支持.NET Core,但目前只支持控制台输出日志,不支持将日志写入文件:这就意味着我们在Linux上运行的示例ASP.NET 5站点无法将日志写入文件,给排查问题造成很大的麻烦,比如现在示例站点经常挂掉的问题. 面对这个问题我们没有善罢甘休,不想因为这个问题影响.NET跨平台之旅的步伐,我们要解决它,而且希望先用简单的方法解决,不想从头实现一个日志组件. 在…
在上一篇文章ASP.Net Core 运行错误 Http Error 502.5 解决办法的最后有提到说,最推荐的升级办法是从2.0升级到2.1X版本. 操作如下 项目的例子直接使用https://github.com/52ABP/52ABP.School 作为对象,毕竟他正好是.NET CORE 2.0的版本. 首先要下载SDK包. 地址:https://www.microsoft.com/net/download 下载最新的.NET Core 2.1的版本. 打开LTM.School项目后,…
今天微软发布了 .NET Core 2.1 RC 1 ,虽然只是 Release Candidate 版,但已经可以在生产环境中使用. NET Core 2.1 RC is supported by Microsoft and can be used in production. .NET Core 2.1 的性能大提升早让人垂涎三尺,看到这个消息后,忍不住今天就进行了升级. 主要升级步骤如下: 将 .csproj 项目文件中的 target framework 改为 netcoreapp2.1…
这两天把一个 asp.net core 1.1 的项目迁移到了 asp.net core 2.0 preview 2 ,在这篇随笔中记录一下. 如果项目在有 global.json 文件,需要删除或修改为 .net 2.0 preview 2 的 sdk 版本号. 对于类库项目的 .csproj,需要把 TagetFramework 改为 netstandard2.0 ,比如 <PropertyGroup> <TargetFramework>netstandard1.6</T…
主要升级步骤如下: 将 .csproj 项目文件中的 target framework 改为 netcoreapp2.1 <TargetFramework>netcoreapp2.1</TargetFramework> 将 Microsoft 开头的 nuget 包升级为 2.1.0-rc1-final  (正式版改为 2.1.0 ),System 开头的 nuget 包升级为 4.5.0-rc1(正式版改为 4.5.0)(这个我没用) <PackageReference I…
注:支持 .NET Core 的 memcached 客户端 EnyimMemcachedCore 的 NuGet 包下载地址:https://www.nuget.org/packages/EnyimMemcachedCore 经过一周的努力,我们的“.NET跨平台之旅”取得了一个重要的进展——基于.NET Core改写了开源的memcached .NET客户端EnyimMemcached,实现了Linux上访问memcached缓存,解决了跨平台.NET的缓存问题. 针对我们的应用场景,将实际…
在将“.NET跨平台之旅”示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 (博文链接)之后,我们有一个难以抗拒的冲动 —— 体验一下 dotnet cli 引入的一个最激动人心的特性 —— 将 .NET 程序编译为本地(native)机器码.对应于我们的示例站点,就是将 ASP.NET Core 应用程序编译为本地机器码. 如何编译呢?非常简单,只需运行下面的命令: dotnet build --native 编译输出如下:…
自从用 dotnet run 成功运行第一个 "Hello world" .NET Core 应用程序后,一直有个好奇心:dotnet run 究竟是如何运行一个 .NET Core 应用程序的? 在 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 与 在Linux上以本地机器码运行 ASP.NET Core 站点 之后,这个好奇心被进一步激发,于是“探秘 dotnet run”顺理成章地成为.NET跨平台之旅的下一站. 首先我们了解一下 dotnet 命令是…
在解决了asp.net core中访问memcached缓存的问题后,我们开始大踏步地向.net core进军——将更多站点向asp.net core迁移,在迁移涉及获取用户登录信息的站点时,我们遇到了一个问题——如何在asp.net core与传统asp.net之间共享保存用户登录信息的cookie? 对于cookie的加解密,传统asp.net用的是对称加解密算法,而asp.net core用的是基于公钥私钥的非对称加解密算法,所以asp.net core无法解密传统asp.net生成的co…
ASP.NET Core示例站点网址:http://about.cnblogs.com/ 首先安装最新版的 .NET Core 运行环境,从 https://github.com/dotnet/cli 的 readme 中 "Ubuntu Installers" 部分获取 Shared Host.Shared Framework.Sdk 的下载地址,分别依次下载安装: wget https://dotnetcli.blob.core.windows.net/dotnet/beta/In…
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上用V2015开发的,以self-contained应用部署方式发布到Linux服务器.Linux服务器用的是Ubuntu 14.04,站点通过supervisor以服务方式运行,部署在2台阿里云服务器上,用了1台阿里云内网负载均衡. 虽然是很简单的站点,虽然是很小的一步,但是进入生产环境就意味着对性…
今天下午我们将生产环境中一个单台服务器 QPS(每秒请求数)在100左右的 ASP.NET Core 站点部署到了 Linux 服务器上,这是我们解决了在 .NET Core 上使用 EnyimMemcached(memcached客户端)的问题之后,.NET 跨平台之旅迈出的重要一步.这个 ASP.NET Core 站点,既用了缓存,也有数据库访问操作,是一个典型的 Web 站点,如果它能持续稳定运行,将为我们全站迁移至 ASP.NET Core + Linux 扫清障碍. 这个 ASP.NE…
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现在换成了ASP.NET Core,主要代码如下: var psi = new ProcessStartInfo(command, arguments) { RedirectStandardOutput = true, RedirectStandardInput = true, CreateNoWin…
今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将运行在Linux上的示例站点(http://about.cnblogs.com)升级到了ASP.NET 5 RC1,并且增加了数据库访问功能——基于Entity Framework 7 RC1访问SQL Server数据库. 示例站点页面左侧的导航是从数据库读取数据动态加载的,数据库服务器用的是阿里…
在经历了阿里云上“黑色1秒”的空欢喜之后,我们“被迫”考虑实现.NET的跨平台,将Web服务器由Windows换成Linux.而这种“被迫”在一个存在已久的愿望下,变得水到渠成.这个愿望就是 —— “Mac上写.NET程序,Linux上跑.NET程序”. 既然水也到了,渠也成了,那我们还等什么,动身起程吧. 今天我们以我们迈出的第一步——一个部署在Linux上基于dnx/corefx/coreclr的非常简单的ASP.NET 5/MVC 6站点——宣布“.NET跨平台之旅”开启了! 这个基于跨平…
Powered by ASP.NET Core on Linux! 我们全站的 .NET Core 迁移工作如火如荼,这是我们今年上半年的重要工作. 今天我们终于完成了博问产品(q.cnblogs.com)向 ASP.NET Core 的迁移,并已发布上线.如果您在博问页面的页脚发现 "Powered by ASP.NET Core on Linux" 的文字,说明您访问的就是 ASP.NET Core 版. 博问的Web服务器用了2台阿里云上能买到的最低配置(1核1G非IO优化实例)…
在前一篇博文中,在好奇心的驱使下,探秘了 dotnet run ,发现了神秘的 corehost  —— 运行 .NET Core 应用程序的幕后英雄.有时神秘就是一种诱惑,神秘的 corehost 让人产生了新的好奇心 —— corehost 是如何加载 coreclr 的?于是,“.NET跨平台之旅”开启了新的旅程 —— 带着这个疑问,游览 cli/src/corehost/ . corehost 的入口是 corehost.cpp 的 main() ,进来后一条大道通向 corehost.…
在将我们的ASP.NET 5示例站点(about.cnblogs.com)升级至ASP.NET 5 RC1的时候,我们增加了控制台日志功能. 在ASP.NET 5添加日志功能很简单,只需在project.json中添加Microsoft.Extensions.Logging.Console的引用: "dependencies":{ "Microsoft.Extensions.Logging.Console": "1.0.0-*" } 并且在 St…
今天在 MSDN 博客上看到了 ASP.NET 5 Beta5 的发布消息(详见 ASP.NET 5 Beta5 Now Available),从中知道了 2 个新特性: 1. DNX: New IRuntimeEnvironment service. Use the new IRuntimeEnvironment service to get runtime details, like OS, CLR, and bitness. 2. MVC: C# 6 support in Razor. 正…
最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was n…
今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用self-contained的方式进行部署. Self-contained部署方式就是每个应用程序自带.NET Core运行时环境与程序集依赖,部署的目标机器不需要安装.NET Core SDK,将应用程序文件夹拷贝过来就能运行.我们通常用的是Portable部署方式,应用程序共享.NET Core…
自从知道微软用dotnet cli取代dnx之后,一直在等dotnet cli支持asp.net core... 昨天看到这篇新闻(ASP.NET Core 1.0 Hello World)后,才知道原来dotnet cli早就支持asp.net core了,而且在github上有专门的示例程序. 于是,立马想在mac上体验一下. 首先去 http://dotnet.github.io/getting-started/ 下载并安装mac版的dotnet cli -- dotnet-osx-x64…
鸡冻人心的2016,微软高产年. build 2016后 各种干货层出不穷. 1 Win10 集成了bash  ,实现了纳德拉的成诺,Microsoft Love Linux!!! 2 跨平台  ,收购Xamarin ..还给开源了 3 Sqlserver有了Linux的版本............... 4 ASP.NET 5迎来第一个稳定版本,跨平台.在Windows Linux Mac OsX 中都能玩了......... 光说不练假把式,先上图一枚.... ---------------…