技术

技术

更新“Microsoft.NETCore.App”到1.0.1出现502.5错误的问题

今天白天遇到一个问题,花了很长时间才解决。记录下。 问题是这样的,我是个强迫症,如果发现有可以更新的包,我肯定会去更新。 新建了一个ASP.NET Core的Api项目,发现有包可以更新,于是通过Nuget自动更新。更新完之后,出现第一个坑。 原先的 "Microsoft.NETCore.App": { "version": "1.0.0", "type": "platform" } 更新之后会丢失"type": "platform",变成 "Microsoft.NETCore.App": "1.0.

技术

Windoows下Redis Sentinel的部署

虽然很久之前就了解了Redis的哨兵机制,今天第一次尝试在多个服务器上部署多个Redis实例,并且设置了哨兵用来进行自动的主从切换。 一、部署Redis 在3台服务器上分别安装了Redis,Redis on Windows下载地址: https://github.com/MSOpenTech/redis/releases。 配置文件添加密码: requirepass <密码> masterauth <密码> 除了设置本实例的密码外,还需要输入master的密码(需要和本实例密码相同),所有实例需要设置相同的密码,以便进行主从切换。 需要注意的是,Redis从某个版本起,加入了一个protected-mode的保护模式。启动保护模式的条件是protected-mode开启,且没有设置bind ,且没有设置密码。我的Redis的实例部署在多个公网服务器下,所以加密码是必须的,另外需要注释掉默认的bind 127.0.0.1 ,以使用公网IP。因为设置了密码,所以protected-mode就无需进行改动,直接使用默认的就可以了。但是在后面哨兵的配置中的保护模式会有一个坑。 在

技术

使用Visual Studio Web Deploy发布ASP.NET Core至IIS

操作系统要求 * Windows 7及以上 * Windows Server 2008 R2及以上 IIS配置 在服务器管理器中,通过添加角色和功能的向导,在服务器角色中勾选Web服务器(IIS),并安装。 安装.NET Core Windows Server Hosting包 1. 安装.NET Core Windows Server Hosting [https://go.microsoft.com/fwlink/?LinkID=827547],这个包会安装.NET Core运行时、.NET Core库和ASP.NET Core模块,这个模块会在IIS和Kestrel服务器之间创建反向代理。 2. 重启服务器,或者从命令行执行net stop was /y,接着执行net start w3svc。

技术

“Bad Request - Invalid Hostname”的解决办法

最近在做一个微信端的应用,除了在本地测试之外,有时候还需要在手机上进行测试。 假设我的手机和PC在同一内网内,PC的IP是192.168.1.2,Website的端口是12345。 我的第一反应是,我应该在手机上通过http://192.168.1.2:12345来访问我的站点。 然而,我得到了这样一个错误: Bad Request - Invalid Hostname ------------------------------------------------ HTTP Error 400. The request hostname is invalid. 方法很简单,Visual Studio 2015的项目目录中会有一个.vs的文件夹,打开.vs\config\applicationhost.config ,找到目标站点的配置节点,例如: <site name="Demo.Website&

技术

ASP.NET Core初体验

前两天试了下ASP.NET Core MVC,很好用。微软整合了大量前端工具,npm、Bower都可以很方便地使用了,甚至对Grunt、Gulp这类的工具都有集成一些任务管理器,这对前端来说,是一件鼓舞人心的事。 ASP.NET Core MVC的推荐目录结构也进行了调整,新增了wwwroot 这样一个静态目录,js、css、图片都可以放这里面,而Bower管理的第三方前端库则会自动下载到wwwroot里面的lib目录下。作为强迫症的我,wwwroot 这个目录必须全部是自动生成的。通过Gulp,可以很轻松的实现这一点。继承原先的目录结构习惯,在解决方案下建立Scripts、Styles、Images文件夹,里面用来放原始的js、less和图片,然后通过Gulp进行合并、压缩、复制到 wwwroot目录下,这样wwwroot这个目录就可以在git里面排除掉了。完美。而在ASP.NET Core的项目目录下默认的.gitignore 文件里,微软其实是已经有这样的想法: # Uncomment if you have tasks

技术

微信公众号中更换域名

更新 如果需要实现微信授权支持多个回调域名,可以参考我这个开源项目:GetWeixinCode [https://github.com/HADB/GetWeixinCode] -------------------------------------------------------------------------------- 问题描述 项目刚做的时候,并没有找到好的域名,所以用了一个比较长的域名。后来公司花钱买了一个心仪的域名,理所当然,我们需要启用新域名了。 我们的H5站点是基于微信的,由于微信的各种坑,这里有很多值得注意的地方。 首先,需要在公众号设置中,将新域名加入到业务域名以及JS接口安全域名中,在微信支付的开发配置中,也要将新域名加入支付授权目录中。这几个比较容易,因为他们都支持配置多个域名。 我们的页面加载之后会立即通过静默授权跳转去拿用户的code以换取openid,来实现自动登录,为了减少跳转,我们在微信公众号的自定义菜单中配置的链接就是微信的授权链接 https://open.weixin.qq.com/connect/oauth2/author

技术

VS2015打包程序无法在XP下安装的问题

问题描述 最近有个需求,需要做一个WinForm程序,目标机器基本都是比较旧的XP机器。需要安装.net Framework环境以及添加快捷方式等,所以决定做一个安装程序。VS默认的是推荐使用InstallShield Limited Edition,经过尝试,发现实在不好用,而且Limited版还有不少限制。于是想用以前VS版本中的Installer Project。寻找了一下,发现有2015版的插件(Microsoft Visual Studio 2015 Installer Projects [https://visualstudiogallery.msdn.microsoft.com/003f3135-bbca-4eb2-951d-88820065a124] )。其他都很顺利,在Win7、Win8.1、Win10中安装都没有问题。唯独当我不远万里来到目标机器的时候,发现在XP系统上安装失败!安装程序莫名退出。纠结了几天,最终在网上搜到了解决方案。原因是这样,在VS2010之后的VS中,dpca.dll这个文件中最低的Windows版本已经不支持XP了,导致在用2010以上的VS

技术

Web Deploy 进阶

之前想写个Web Deploy的教程,结果一直耽搁了。最近又遇到一个比较高级的用法,打算暂时就不写基础教程了,把几个不常用的但是很有用的用法列一下。 1、部署的时候排除某些文件或文件夹。 这个功能其实很有用,比如一些自定义的config,里面包含了一些key或者很重要的信息,而你的代码是开源的,你希望分享源代码,但是这些服务器相关的key还是不能暴露的,这时候,你本地的config里可能只是一些测试的key,或者压根就可以是空的。在服务器上的config里,你可以放心大胆地配置这些key。每次部署的时候,我们就希望跳过这些config文件,而不至于用本地的config去替换掉线上的。 我们需要修改项目的配置文件,也就是.csproj文件,注意修改Release的,如果你发布选项中配置的是Release的话。 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <Optimize&

技术

修复position:fixed在ios虚拟键盘弹出时错位的bug

问题描述:在使用bootstrap的navbar-fixed-top时,发现在iPhone上的微信里面,当点击input弹出输入法之后,顶部fixed的navbar消失,在输入法没有关闭的情况下,向上滚动,会发现navbar在半空中。 Google了一下,发现这个问题在iOS中很常见,Bootstrap也对此进行了说明(戳这里 [http://getbootstrap.com/getting-started/#support-fixed-position-keyboards])。 > Virtual keyboards Also, note that if you're using a fixed navbar or using inputs within a modal, iOS has a rendering bug that doesn't update the position of

技术

AuthenticationManager 无法注销用户的问题

最近遇到一个很诡异的问题,在最近的一个新项目中,发现在MVC5下,偶尔会出现登陆的用户无法注销的问题,经检查发现 AuthenticationManager.SignOut() 执行之后并没有删除Cookie,手动删除Cookie之后,该功能又正常了,又能正常登陆、注销了。前面几次出现这个问题我都是手动删除Cookie,发现恢复了之后,我也就没在意。 刚刚又出现这个问题,我怒了,决定Google下。Google了一番之后,发现这个问题还挺普遍,但是都没有什么好的答案。后来看到有人说,用 AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie) 可以解决这个问题,一试,还真解决了。可是官方的例子里并没有传这个参数,而且我以前的几个站点,都是用的官方例子里的 AuthenticationManager.SignOut() ,而且都没有出现这个问题。百思不得其解,好挫折。不弄清楚睡不着觉。于是又继续搜,终于发现了一个帖子, https://aspnetidentity.codeplex.com/w