摘要: 今天用 SQL Server Profiler 查看 Entity Framework Core 生成的 SQL 语句时,突然发现一个细节改进,并且被它震撼了一下。震撼之处就是这个u(表的别名),它可不是 EF Core 随意起的名字,而是来自 LINQ 代码中的命名。阅读全文
posted @ 2017-01-19 23:08 dudu 阅读(77) 评论(1) 编辑
摘要: .NET Core 迁移工作如火如荼,今天在使用 Entity Frameowork Core(又名EF Core)时写了下面这样的 LINQ 查询表达式: 结果在 SQL Server Profiler 中发现竟然进行了全表查询。 之后将 new Guid(userId) 从表达式中移出,保存于一阅读全文
posted @ 2017-01-16 22:06 dudu 阅读(82) 评论(3) 编辑
摘要: 之前在将 Memcached 客户端 EnyimMemcached 迁移 .NET Core 时被这个“坑”坑的刻骨铭心,当时以为只是在构造函数中调用异步方法才会出线死锁(deaklock)问题。最近在使用 redis 客户端 StackExchange.Redis 时也遇到了这个问题。阅读全文
posted @ 2017-01-05 14:24 dudu 阅读(272) 评论(8) 编辑
摘要: 这是在昨天的 .NET Core 迁移中遇到的问题,之前在 .NET Framework 中是这样合并 Expression阅读全文
posted @ 2016-12-30 12:30 dudu 阅读(133) 评论(3) 编辑
摘要: 通常我们在 Prgram.cs 中使用硬编码的方式配置 ASP.NET Core 站点的 Hosting 环境,最常用的就是 .UseUrls() 。 但这种硬编码绑定端口的方式会给在同一台 Linux 服务器上部署多个站点造成麻烦,因为不同站点需要绑定不同的端口。除非你在开发时就已经约定好各个项目阅读全文
posted @ 2016-12-29 15:18 dudu 阅读(98) 评论(0) 编辑
摘要: 今天在将一个项目迁移至ASP.NET Core的过程中遭遇一个循环依赖问题,错误信息如下: 一开始以为是项目之间的引用关系引起的,在project.json中找来找去,一无所获。 后来从构造函数下手,才发现问题所在。 实现ITagService的类TagService的构造函数是这么定义的: 这是很阅读全文
posted @ 2016-12-28 18:18 dudu 阅读(58) 评论(1) 编辑
摘要: 之前的博文”ASP.NET Core中显示自定义错误页面“中的方法是在项目中硬编码实现的,当有多个项目时,就会造成不同项目之间的重复代码,不可取。在这篇博文中改用middleware实现,并且放在独立的项目中发布成NuGet包,项目中使用时只需安装NuGet包,然后在Startup的Configure()方法中添加如下的一行代码。阅读全文
posted @ 2016-12-27 18:25 dudu 阅读(90) 评论(0) 编辑
摘要: .NET 的开源,有了更多的DIY乐趣。这篇博文记录一下在新安装的 Linux Ubuntu 14.04 上通过自己动手编译 dotnet cli 的源代码生成 .net core sdk 的 deb 安装包。阅读全文
posted @ 2016-12-07 23:06 dudu 阅读(140) 评论(1) 编辑
摘要: 被这个坑坑得刻骨铭心!死锁问题的确是由于在构造函数中同步调用异步方法引起的。目前 System.Net.NameResolution 只提供了异步的 API 进行主机名的解析,上面的 GetHostEntry() 是同步方法,但只支持 netstandard 2.0阅读全文
posted @ 2016-12-04 23:28 dudu 阅读(163) 评论(0) 编辑
摘要: 一个 asp.net core 站点,之前运行在Linux 服务器上,运行一段时间后有时站点会挂掉,在日志中记录很多“EMFILE too many open files”的错误: 后来将这个 asp.net 站点部署到 Windows 服务器的 IIS 上。运行一段时间后,发现其中一台服务器出现5阅读全文
posted @ 2016-12-02 21:11 dudu 阅读(225) 评论(0) 编辑
摘要: 今天第一次将整个 asp.net core 站点发布到 Windows 的 IIS 上,以前都是发布到 Linux 服务器上。开始使用 dotnet publish -c release 命令发布,浏览器访问站点时出现下面的错误:HTTP Error 502.5 - Process Failure阅读全文
posted @ 2016-11-28 18:30 dudu 阅读(428) 评论(6) 编辑
摘要: 从 .NET Core SDK 1.0 Preview 3 build 004056 开始,.NET Core 弃用 project.json,回归 .csproj,主要原因是为了兼容 MSBuild ,详见 Announcing .NET Core Tools MSBuild “alpha” 。阅读全文
posted @ 2016-11-18 12:16 dudu 阅读(544) 评论(5) 编辑
摘要: 这是从 ASP.NET Core 1.1 官方发布博文中学到的一招,可以在 dontet publish 时将 Razor 视图编译为 .dll 文件。MVC Razor 视图被编译成了一个 AboutUs.PrecompiledViews.dll 文件,运行站点时只需要这个 dll 文件,不需要 .cshtml 视图文件了。阅读全文
posted @ 2016-11-17 17:17 dudu 阅读(286) 评论(5) 编辑
摘要: 1)下载安装包含 .NET Core 1.1 Preview 1 的 SDK;2)下载最新 VS 2015 NuGet 插件;3)创建一个扩展名位 .sln 的空白文件,将以下内容复制粘贴到这个 .sln 文件中;在各个VS项目文件夹(.csproj文件所在的文件夹)中创建扩展名位 .xproj 的空文件,将下面的内容复制/粘贴至其中,并将 RootNamespace 的值设置为当前项目的命名空间。阅读全文
posted @ 2016-11-07 12:07 dudu 阅读(593) 评论(3) 编辑
摘要: 这是在对一个博客模板进行移动端适配时遇到的一个场景。要解决的问题是如何在不修改任何html代码的情况下,仅仅通过css实现下面的效果:1)改变它们的显示顺序;2)让它们以行的方式显示。阅读全文
posted @ 2016-11-06 16:20 dudu 阅读(4149) 评论(16) 编辑
摘要: 这篇博文分享的是”C#中使用OpenSSL的公钥加密/私钥解密“一文中的解决方法在 .net core 中的改进。之前的博文针对的是 .NET Framework ,加解密用的是 RSACryptoServiceProvider 。虽然在 corefx(.NET Core Framework) 中也有 RSACryptoServiceProvider ,但它目前只支持 Windows ,不能跨平台。阅读全文
posted @ 2016-11-03 16:59 dudu 阅读(941) 评论(8) 编辑
摘要: 在 ASP.NET Core 中,默认情况下当发生500或404错误时,只返回http状态码,不返回任何内容,页面一片空白。 如果在 Startup.cs 的 Configure() 中加上 app.UseStatusCodePages(); ,500错误时依然是一片空白(不知为何对500错误不起作阅读全文
posted @ 2016-10-27 17:24 dudu 阅读(187) 评论(0) 编辑
摘要: ASP.NET Core 1.1 Preview 1 中新增了 URL Rewriting middleware ,终于可以进行 URL 重写了,实际使用体验一下。首先要将 ASP.NET Core 项目升级至 .NET Core 1.1 Preview 1,然后在 project.json 添加 "Microsoft.AspNetCore.Rewrite" 的引用并运行 donet restore 安装对应的nuget包。阅读全文
posted @ 2016-10-26 23:04 dudu 阅读(237) 评论(3) 编辑
摘要: 在ASP.NET中,使用负载均衡时,可以通过ServerVariables获取客户端的IP地址。但在ASP.NET Core中没有ServerVariables的对应实现,需要换一种方式,可以在HttpContext.Request.Headers中获取,需要注意的是key与ServerVariables方式不一样。阅读全文
posted @ 2016-10-18 11:30 dudu 阅读(322) 评论(6) 编辑
摘要: 在 EnyimMemcachedCore中实现 Microsoft.Extensions.Caching.Distributed.IDistributedCache 接口时,遇到了一个过期时间处理的问题。在 IDistributedCache 中用到了 DistributedCacheEntryOptions ,其中有一个属性 AbsoluteExpiration 的类型是 DateTimeOffset ,而 EnyimMemcachedCore 计算过期时间用的是 DateTime阅读全文
posted @ 2016-09-27 12:00 dudu 阅读(288) 评论(0) 编辑