All Posts (295) 295


Attribute Routing in ASP.NET MVC 5 翻译及补充

原文:http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx 作者:Ken Egozi 翻译:汪宇杰 路由(Routing)指的是ASP.NET MVC如何将一个URL匹配到一个Action上的过程。MVC5(译者注:MVC框架的最新版本,与VS2013一起发布)支持一种新的路由类型,叫做基于特性的路由(attribute routing),正如它的名称所隐含的,特性路由使用特性(译者注:C#的特性标记,如[Serializable])定义路由。特性路由给了你更多的自由去控制Web应用中的URL地址。 早期风格的路由,即基于契约的路由,仍然被支持。事实上,你可以把这两者结合起来。 这篇文章涵盖ASP.NET MVC5特性路由的基本玩法。 为毛用特性路由?...

ASP.NET MVC Route Attribute

巧用委托简化重复代码

在C#编程中通常会碰到许多重复劳动的情况,而面向对象编程的原则就是消除这些重复劳动,增加代码重用性。我们虽然有很多基本的模式去做抽象和封装,但还是会碰到一些看似不得已的重复劳动的情况。比如你在写一个数据访问层的类,按照规范,每个方法都需要加try-catch,就像这样: public void Method1() { try { // logic... } catch (DataException ex) { // fuck the ex... } } public void Method2() { try { // logic... } catch (DataException ex) { //...

C# lambda Delegate Func Action

Windows Phone 8 列表控件(LongListSelector)分组

Windows Phone 8的列表控件天生支持分组,就像人脉应用中的类似,可以快速根据拼音首字母定位。在列表视图中点击分组标题后显示所有的组名,点击组名即可定位到这个组。我们自己开发的WP应用也能做到这样的分组功能,但需要一些额外的代码。下面的例子来自我的一个WP应用,有图有真相: 分组视图: 实现LongListSelector分组其实很简单。 1. 首先,你需要一个分组的助手类,这是一个相对标准的类,MSDN上抄来的: public class Group : List { public Group(string name, IEnumerable items) : base(items) { this.Title = name; } public string Title {...

Windows Phone

Azure Blob Storage 编程简单入门

Microsoft Azure上的Storage服务看起来非常牛逼,它是用来在云端存储数据和文件的服务,比如Azure里的虚拟机就是保存在Storage中的。当然我们可以用Storage做更多的事,比如有些数据并不适合存放在关系型数据库中,就像图片和附件,我们就可以使用Storage服务。 今天介绍的是Storage里的一种,Blob Storage。Windows Azure Storage还有其他两种存储:Table和Queue,但是我只开荒过Blob Storage,所以其他两个就只能以后介绍了。 使用Blob存储首先得建立一个Storage Account,Account中包含的是Container,这类似于文件夹,最后你的文件会存放在Container下,也就是Blob。 它们的关系就像这样(可耻的盗用了一张Azure官网的图片): 一、在Azure管理页面中建立St...

Azure Blob Storage

EntityFramework中使用.Include()做饥饿加载可能产生的性能问题

这几天在码新版博客程序,因为文章表字段太多,手贱把几个相关列拆分到了1-1的表中。比如Post 1-1 PostPublish,Post 1-1 PostExtension。但是性能突然比以前差了一点。 和这两张相关表直接交互的是这么一段代码: var query = Repository.Select().Include(p = p.PostExtension).Include(p = p.PostPublish) .Where(p = p.PostPublish.IsPublished && (authorName == null || String.Compare(p.Author, author...

EntityFramework SQL 性能

如何删除TFS上的WorkItem

我们知道,在TFS上万一建错了Work Item是删不掉的。最多把状态设置为Removed不会显示而已。但如果我们想真正删除一个Work Item就需要一些技巧了。 首先,你电脑上必须安装了Visual Studio(这个大部分用TFS的程序员都应该有吧),并且你登录TFS的账户必须是当前Collection的管理员。不然是没有权限删除work item的。 登录TFS后,找到要删除的work item ID,如下图: 然后启动VS的命令行工具 Developer Command,运行下面这条命令: witadmin destroywi /collection:"你的TFS Collection地址" /id:要删除的Work Item ID 等删除确认出来后,然后按“y”确认。就可以成功删除了。...

TFS

How to Change TFS Server URL in Visual Studio

今天又给大家带来一个实用装逼技巧。这个故事的起因是我无意中发现微软的TFS Service支持URL重命名了,非常牛逼,就像这样: 但带来的问题就是我们需要手动更改以前所有使用这个TFS地址的地方。Visual Studio就是首当其冲的了。很可惜,在VS里面,是没有办法直接编辑TFS地址的。 如果删掉重建的话,还需要把之前所有的本地文件夹都映射一遍,万一玩脱了就爆了。所以还是建议去注册表手动修改。 要修改的位置是: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\TeamFoundation\Instances (如果你用的是VS2010,就把11.0换成10.0) 第一处:定位到原TFS地址的文件夹,把右边的Uri字段改掉。 第二处: 还有有个很阴巴的文件夹,藏在你的TFS文件夹下面,展开TFS文件夹,...

TFS Visual Studio

如何手动将一个普通.NET类库转换成可移植类库(Portable Class Library)

可移植类库是.NET程序员装逼的必备良药,至于它有多牛逼,我也不知道,大家可以自己看一下 http://msdn.microsoft.com/en-us/library/vstudio/gg597391%28v=vs.110%29.aspx 但是万一你装逼的时候手一滑,建成了一个普通的Class Library肿么办?普通青年的做法是删掉再建一个,这当然是OK的。但是,作为文艺青年,我们可以继续装逼:自己动手把这个类库转换成Portable Class Library。 为了演示,我先建一个普通的.NET类库:AVeryNBClassLibrary 在这个项目的属性页里面,自然是看不到Portable Class Library的选项的。 接下来,在项目上点右键,选择Unload Project,然后再次右键选择Edit AVeryNBClassLibrary.csproj...

.NET PCL Portable Class Library

如何在Windows Azure虚拟机上配置外网能访问的FTP服务器

昨天哥被功夫网墙出了翔,一怒之下打算用Windows Azure VM建个FTP来下东西,本来以为只要配置IIS和防火墙再打开Azure Portal的21端口就行的,结果又被Windows Azure爆出了翔(Blow up to shit)。在Azure上配置FTP没那么容易的。 首先,如何安装和正常配置一个FTP我不叙述了,大家可以自己搞定。Azure唯一特殊的就在于开防火墙端口。 1. 你需要知道你VM的外网IP,可以用ping命令,虽然Azure VM不允许被ping,但解析IP还是没问题的。 2. 将IP添加到FTP站点的FTP Firewall Support里面。 3. 由于Data Channel Port是在IIS Root Node上被锁住的,所以还要回IIS Root去配端口范围。这些端口是FTP用来传输数据的(FTP居然不是只用21端口的,虽然...

IIS VM FTP

Windows 8上IIS8部署WCF服务报错的解决办法

今天被IIS爆出翔了,写了个WCF Service,部署到IIS上,本来觉得是很简单的事,结果爆了: 未能从程序集“System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.ServiceModel.Activation.HttpHandler”。 由于我的IIS是安装.NET Framework和VS以后才装的,ASP.NET也没装上,所以一般情况下,只需要运行那个众所周知的“aspnet_regiis -i”命令就行了。但是Windows 8上这个命令是爆的。。。 正确的解决办法是,除了在Windows功能-Internet信息服务-应用程序和开发中选择ASP.NET,还需要在.NET Framework 4.5 高级服务-WCF服务下...

ASP.NET IIS WCF