Edi Wang

IIS 17


如何配置IIS将旧域名的URL转向新域名

如果你网站要更换新域名,必定会碰到迁移的问题。你不可以直接停止老域名的解析,因为这样做会让搜索引擎失去老的索引,然后降低你网站的排名,正确的方法是告诉搜索引擎,你已经改域名了。也就是当用户或搜索引擎访问你的旧URL时,将URL转向到新域名的对应位置。 比如我的博客,旧域名是diaosbook.com,新域名是edi.wang。那么对于之前对diaosbook.com的访问,如: http://diaosbook.com/post/2015/4/22/how-to-read-webconfig-appsettings-with-bigiblity 需要转向到新域名: http://edi.w...

IISURLURL Rewrite

如何在IIS管理器(inetmgr)中连接Azure WebSite

我们在Azure上建出来的网站看起来只能用Azure的网页版界面管理,或者Visual Studio的Server Explorer管理。如果想通过IIS的管理界面配置我们的网站,似乎很多小伙伴只能考虑用Azure VM建网站。其实不然。 首先,Windows 8.1的IIS管理器默认情况下确实不能连接Azure,所以要装一个插件:http://www.iis.net/downloads/microsoft/iis-manager 安装完成后,打开你本机的IIS管理器,在File菜单下就会多出来一个: 在Server name里面输入你的Azure网站的SCM地址,即 网站名称.scm...

IISAzure

Azure Website部署的网站woff字体在IE下404的问题

如果你的网站用了Microsoft Azure的Website服务(改名部门已经改成了Web Apps),那么你会发现woff格式的webfont在IE下是爆掉的,请求回来是404。 根据经验,这应该是IIS没有配置对应的MimeType引起的。然而Azure上的IIS对我们来说是不可操作的,不能够远程桌面到服务器上去改设置,肿么办? 其实在IIS7以后,MineType的配置是可以通过web.config管理的。所以我们只要在web.config/system.webServer节点里面加上这段代码就可以让IIS处理woff的请求了: BTW,最快的在Azure上做即时生效...

IISAzurewebfont

如何获得IIS应用程序池账户的明文密码

有时候,为了获得必要的权限,我们会给IIS的应用程序池的身份设置本地或者域账号去跑。比如SharePoint应用经常这么。但这是很不安全的,这些账户的密码都是明文保存的。 对于本地账号,密码是读不出来的。但如果你用的是域账号,那么有IIS管理权限的人能够直接读取应用程序池账户的明文密码。不需要任何三方工具,CMD足够: appcmd list apppool "应用程序池名称" /text:* 效果如下。明文的账号和密码被显示在[processModel]节点下面。这是一个域账号。也是因为这里的密码是单独保存的,所以你每次改密码,IIS如果忘了改,网站被访问的时候,还是会已老的身份去执行,这...

IISPasswordSecurity

Run Scheduled Tasks in ASP.NET Application

在ASP.NET里运行定时任务,这是个老生常谈的话题了,撇开那些用per request搞定屌丝办法,目前最好的解决办法只有2种: 1. 如果你有大微软的Azure,可以直接在网站服务中找到Jobs,自己看一下就会了 2. 如果你是屌丝,买不起Azure,就用本文介绍的WebBackgrounder搞 由于ASP.NET是服务器端Web框架,所以一般而言,一个操作的往往是只有收到客户端Request之后才能执行的,如果网站一直没人访问,没有Request进来,如何执行代码呢?定时任务就是这种坑爹场景。 还好,大微软的MVC帝、ASP.NET小王子haacked蜀黍给我们写了个 http://www.nuget.org/packages/WebBackgrounder/ 专门捣鼓这种场...

ASP.NETJobsSchedule

简单粗暴有效解释ASP.NET中的线程池是怎样处理Http请求的

自从有了.NET 4.5,我们又多了一个装逼语法:async,await。但如果错用就会装逼不成反变傻逼。首先我们得明白在ASP.NET中async await所针对的问题,这样才能正确的装逼。于是我们就不得不先研究一下线程池。 在IIS服务器上,处理Http请求的是线程,和Windows的其他软件一样,干活的永远是线程,而不应该说是进程。一个线程同时只能处理一个request,而web上的request不可能同时永远只有一个,所以线程需要和他的小伙伴们一起组成线程池,才能保证网站的响应。当一个线程处理完了手头的请求,它就被释放掉了,于是如果再有新的请求进来他就能再去处理。但如果当线程用完了,并...

IISasyncawaitThread

针对IIS7以上的ASP.NET网站自定义错误页面与异常日志总结

自定义错误页面和异常记录是个很古老的话题了,但依旧可以让人爆到现在。在我做了无数次试验并总结经验和原则后,写下本文,已警后人。 本文的范围和限制 本文仅仅适用于部署在IIS7或以上版本中的ASP.NET 4.0集成模式应用程序。IIS7以上的意思是Windows Server 2008以上服务器适用。我已在WS2012R2,IIS8上测过。 本文的方法均适用于ASP.NET WebForm和MVC应用程序。 本文针对的问题 静态错误页面好还是动态错误页面好?我该如何设计ASP.NET网站错误处理? 我不希望错误页面后面跟上aspxerrorpath=…这个小尾巴。 我的自...

404httpErrorsIIS7customErrors

在IIS服务器上安装和配置Web Deploy (WS2008R2)

作为ASP.NET开发者,部署应用到测试或生产环境是家常便饭。不知道大家平时都是怎么部署网站的?手工拷贝文件?FTP?还是高端的package解压?对我来说,最方便的还是WebDeploy,它可以让我从Visual Studio中一键部署网站到IIS服务器,并且智能判断哪些文件是新增的,哪些是需要修改或删除的。Windows Azure Website就默认支持这样的部署方式。但我们不可能一直在公有云上做开发,如果我们想把这样方便的功能带到本地怎么办呢? 经过开荒,我在Windows Server 2008 R2和Windows Server 2012 R2上都成功配置了Web Deploy。目...

IISWeb Deploy

如何在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里面。...

IISVMFTP

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上这...

ASP.NETIISWCF