06 2015 档案
摘要:Kestrel是目前在非Windows平台上运行ASP.NET 5应用程序的唯一可用Web服务器,但微软似乎将它冷落在一边,源代码更新很慢。今天试着在Linux上编译Kestrel的源代码,遇到了很多问题。在这篇博文中记录一下。
阅读全文
摘要:前几天在使用基于 mono 的 dnx 中的 dnu restore 命令安装 nuget 包包时,遇到了 “Cannot handle address family” 错误。在 github 上提交 issue 之后,从回复中得知这是 mono 的一个 bug,有人已经向 mono 提交了这个 bug。当时错误一直存在,怎么也无法完成 dnu restore 。后来,过了一段时间再操作,突然就好了。
阅读全文
摘要:在Ubuntu上写好了一个简单的ASP.NET 5应用程序,尝试将这个程序部署在没有mono环境的CentOS服务器上。部署步骤如下:1)安装libuv;2)安装openssl;3)安装dnvm;4)用dnvm安装基于coreclr的dnx;5)用git签出ASP.NET 5应用程序的源代码;6)安装ASP.NET 5应用程序所需的nuget包包;7)通过dnx命令运行ASP.NET 5应用程序。
阅读全文
摘要:ASP.NET 5 与之前的 ASP.NET 相比,有着翻天覆地的变化。了解与熟悉它需要一个过程,而我选择的了解方式是一步一步从无而有手写一个简单的 ASP.NET 5 程序,然后根据遇到的问题进行学习。这篇博文是关于静态文件(比如图片,css)处理的。
阅读全文
摘要:在 ASP.NET 5 中如果不进行显示错误信息的相关配置,在发生错误时,在浏览器中只能看到空白页面。配置方法如下:1)在 project.json 中添加对 Microsoft.AspNet.Diagnostics 的引用;2)在 Startup.cs 中添加 app.UseErrorPage() 。
阅读全文
摘要:在 Linux Ubuntu 服务器上用 dnx 基于 Kestrel 成功运行一个 ASP.NET 5 站点后,怎么也无无法退出。不管是按回车,还是按ctrl-C,还是按ctrl-Z。直接关闭客户端 ssh 窗口,命令依然在运行,站点依然可以正常访问。
阅读全文
摘要:昨天尝试用nginx搭建nuget镜像服务器,镜像服务器需要两个功能:1)反向代理;2)内容缓存。用nginx做反向代理,配置非常简单,只需在/etc/nginx/nginx.conf中添加一个包含proxy_pass的server设置。而添加缓存功能,配置稍微复杂些。
阅读全文
摘要:昨天在 Mac 上手写了一个最简单的 ASP.NET 5 程序,直接在 Startup.cs 中通过 Response.WriteAsync() 输出响应内容。今天接着昨天的代码,用 vim 一步一步手写一个最简单的 ASP.NET 5 MVC 程序。
阅读全文
摘要:今天坐高铁时尝试了一种学习ASP.NET 5的笨方法,从空文件夹开始,根据运行dnx . kestrel命令的错误信息,一步一步写代码,直至将一个最简单的ASP.NET程序运行起来。虽然是用最笨的方法写了一个最简单的程序,但是这么动手操作一次,感觉就是不一样。
阅读全文
摘要:最近在使用 GitLab 的 Merge Requests 功能进行 Code Review 。我们在 Code Review 的过程中,在第 5-6 步遇到了一个奇怪问题:开发人员A在 push 到分支之后,开发人员B在 Code Review 时在 Merge Request 中看不到最新的 Commit。
阅读全文
摘要:对于一些返回数据非常简单的 Web API,比如我们今天遇到的“返回指定用户的未读站内短消息数”的Web API,返回数据就是一个数字,如果用 http response body 返回数据,显得有些奢侈。何不直接通过 http headers 返回呢?节能又环保。于是今天在 ASP.NET Web API 中实际试了一下。
阅读全文
摘要:在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序。在这篇博文中我们将 Ubuntu 换成 CentOS。目前 dnx 的编译需要用到 mono,所以先要安装 mono,而且最好是用最新的 mono 源代码进行编译并安装。
阅读全文
摘要:在 Linux Ubuntu 上成功编译 dnx 之后,会在 artifacts/build/ 文件夹中生成 dnx-coreclr-linux-x64/ 与 dnx-mono/ 这2个文件夹,前者是基于 coreclr 的 dnx ,后者是基于 mono 的 dnx 。这篇博文中我们将使用基于 coreclr 的 dnx 运行 ASP.NET 5 示例程序。
阅读全文
摘要:在C#中进行公钥加密/私钥解密,需要用RSACryptoServiceProvider,但是它不支持由OpenSSL生成的公钥/私钥字符串。网上有牛人通过解析公钥/私钥字符串,将之导入到SACryptoServiceProvider中(详见这里)。我们就是使用这位牛人的代码解决了这个问题。
阅读全文
摘要:编译时间:北京2015年6月17日上午;操作系统:Ubuntu 14.04.2 LTS;Mono版本:Mono JIT compiler version 4.3.0 (master/3445ac5 Tue Jun 16 20:43:48 CST 2015)。一、编译coreclr;二、编译corefx;三、编译dnx。
阅读全文
摘要:在前一篇博文中,我们通过以 OAuth 的 Client Credential Grant 授权方式(只验证调用客户端,不验证登录用户)拿到的 Access Token ,成功调用了与用户无关的 Web API。在这篇博文中,我们将以 OAuth 的 Resource Owner Password Credentials Grant 的授权方式( grant_type=password )获取 Access Token,并以这个 Token 调用与用户相关的 Web API。
阅读全文
摘要:在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端通过CNBlogsAuthorizationServerProvider成功发放了Access Token,在客户端也成功拿到了Access Token。那Access Token有什么用呢?在OAuth中对Resource Server访问权限的验证都是基于Access Token。不管是什么样的客户端,Resource Server铁面无私,只认Access Token。
阅读全文
摘要:OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手。因此,Microsoft.Owin.Security.OAuth应运而生,帮助开发者偷了不少工,减了不少料。这篇博文试图通过一个简单的示例分享一下如何基于Microsoft.Owin.Security.OAuth,使用Client Credentials Grant授权方式给客户端发放access token。
阅读全文
摘要:最近在改进园子的图片上传程序,希望实现用户上传图片时同时将图片文件保存在三个地方:1)服务器本地硬盘;2)又拍云;3)阿里云OSS。并且在保存时使用异步操作。对于异步保存到本地硬盘,只需用 Steam.CopyToAsync() 将上传文件流异步复制到 FileStream 即可。对于异步保存至又拍云,只要借助 WebRequest.GetRequestStreamAsync() + Steam.CopyToAsync() 就可以实现。
阅读全文
摘要:GitLab的数据库用的是PostgreSQL,之前由于阿里云RDS不支持PostgreSQL,只能将GitLab的数据库部署在云服务器上。6月1日得知阿里云推出了PostgreSQL RDS,于是立马将GitLab的数据库迁移至PostgreSQL RDS。下面分享一下迁移的主要操作步骤。
阅读全文