ASP.NET Boilerplate 提示友好错误信息

作者:V君 发布于:2016-6-15 12:17 Wednesday 分类:挖坑经验

TL;DR:

 启用错误页面模式在 web.config 就可以得到带错误信息友好提示页面

 若返回 Json 则把 ActionResult 改为 JsonResult

 

 需要注意的是, 用来代替的错误信息页面 error.cshtml 不能再次引发异常

  否则仍然会显示默认的无堆栈黄页


ABP内置的UserFriendlyException很好用, 但是不正确配置的话还是会给你黄页.

尽管官网文档描述得很详细, 但是TL;DR版本还是可以有的!

标签: 软件开发 ASP.NET MVC

评论(0) 引用(0) 浏览(1605)

重新认识EntityFramework, 比较几个LINQ数据访问/ORM库

作者:V君 发布于:2016-5-27 9:29 Friday 分类:挖坑经验

前些年我曾说过 Entity Framework 就是个坑 

但自从最近试着摆弄 ASP.NET Boilerplate Project 对Entity Framework大有改观.

原来版本6之后的Entity Framework完全可以把dbml dbLinq linq2db sqlite-net远远甩在后头.


dbml - LINQ to SQL 类

◆能从数据库生成设计器代码, 也能先设计再生成数据库

◆完整的复杂查询/投影支持

◇仅限MsSQL


dbLinq - 上者的一个类似克隆一样的实现 GitHub 

◆支持多种数据库

能从数据库生成设计器代码, 不支持自动创建数据库

◇复杂查询/投影不完善

 

linq2db - 近些年发起的开源LINQ数据访问/ORM库, 看起来是上者的重新实现 GitHub 

◆支持多种数据库

◆完整的复杂查询/投影支持

能从实体类生成数据库, 也能从数据库生成实体类(T4)

 

sqlite-net - 轻量级sqlite数据访问实现, 因为轻量所以没太多功能 GitHub

◆单个源码文件加到项目即可使用

跨平台直接调用原生实现, 不依赖ADO.NET

○简单的LINQ支持

◇不支持复杂查询/投影


Entity Framework 6+ - 着看怎么完爆上面这堆

◆上述除了轻量级之外的所有优点

◆多种开始方式: CodeFirst,DbFirst,ModelFirst. (不过 CodeFist 就够了)

,能按你对模型类的变更生成数据库更新脚本

◇目前尚未发现缺点

使用一段时间后总算是找到了些缺点(?),可能是考虑到兼容不同数据库 

 LINQ表达式解析依赖于提供程序实现,

 比如MySQL提供程序实现的表达式解析器的解析和投影就BUG满满,

 具体表现为各种操作符报不支持或者导航属性投影字段混淆.


总之赶紧来用这货吧 ゚∀゚)σ

偷偷更新:其实EF的迁移并不太好使,还是基于现有数据库的CodeFirst跟Dapper混搭好 乂目

标签: 软件开发 C# 数据库 LINQ ORM

评论(0) 引用(0) 浏览(1865)

无缝循环播放音频 - 蛋疼小工具

作者:V君 发布于:2016-4-25 18:26 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]
效果:对指定的音频文件做无缝循环播放.
用法:一个可选参数, 用来指定音频文件. 可以无参数打开然后拖进去.
限制:目前只支持WAV(PCM)格式.
环境:需要.NET 2.0, win7以上可以直接使用. XP需要安装.NET 2.0才能用


扯一句:

 只是为了在挖坑时循环播放某游戏的BGM,

 一直在用的播放器循环有缝隙, 不爽就自己现炒个轮子.

标签: 软件开发 C# 多媒体 无缝循环播放 音频

评论(0) 引用(0) 浏览(2114)

ISO镜像文件替换工具 - 自制小工具

作者:V君 发布于:2016-4-25 6:59 Monday 分类:我的应用

TL;DR
[ 本体 ][ 源代码 ]
效果:替换ISO镜像内的文件.
用法:三个必选参数, 分别是ISO镜像, 镜像内路径, 用于替换内容的文件.
注意:用于替换的文件长度必须小于或等于镜像内文件长度.
限制:目前只实现了ISO9660的支持,典型的解释是可以用在PS3镜像,却不能用在Win7安装镜像.
环境:需要.net4, win8以上可以直接使用. win7需要安装.net4.5才能用

扯扯:

由于玩ODE PS3需要重签EBOOT/SELF, 下下来的东西部分会是原盘镜像而不是打散的目录.
然而ODE的奇怪机制, 个头大的游戏直接用打散的目录会死机...
难道这是要先解开然后替换再重新创建镜像? 傻了, 都是以10G做单位的.
咕狗过没有ISO镜像编辑工具, 至少没有 on-the-fly 这样的.
根据经验, 重签之后的文件会比原盘小, 因为重签过程显示 compress 嘛.
好吧, 看来又要造轮子了.
先做可行性分析, 用WINHEX定位到文件内容偏移, 手动修改再用别的软件读被修改的文件.
内容预期, 没有出错, 证实可行.
然后接着啃ISO镜像格式标准文档/查阅别人写好的代码经过无数坑,总算是弄懂格式长啥样.
然后自个从头到尾写了个实现, 最后打算做界面时偷懒了.
 -- 你个打字的拖什么控件, 给我老老实实用命令行!

最后给看不懂TLDR的人一个示例:
IsoImage.exe z:\ps3.iso PS3_GAME\USRDIR\EBOOT.BIN Z:\453\EBOOT.BIN
这样就能把重签好的EBOOT塞回镜像里面了

标签: 软件开发 C# PS3 ISO9660

评论(0) 引用(0) 浏览(2422)

RawCap抓包工具也不是万能的

作者:V君 发布于:2016-4-5 11:09 Tuesday 分类:填坑经验

TL;DR: 官方网站已经明确, 在XP之后的Windows上有以下限制, 看来只能用作回环抓包了.

Raw sockets limitations (OS dependent)

(略过两项)

External interfaces

Microsoft's newer operating systems (later than WinXP) have limitations associated with raw socket sniffing of external interfaces, i.e. everything that isn't localhost. Known limitations in Windows Vista and Win7 are:

  • Windows 7 - Can't capture incoming packets
  • Windows Vista - Can't capture outgoing packets

Due to these limitations in the raw sockets implementations of Microsoft's current operating systems we suggest running RawCap on Windows XP if you need to capture from external interfaces.


不扯不快:

说到抓包, 大家可能第一个想到的就是WireShark. 

然而这货想抓回环包要稍稍蛋疼的配置一下才能抓, 并且略庞大.

配置页面就提到可以用RawCap轻松抓取.

 

这次环境是2003, 想抓某个服务应用程序的包做故障诊断. 

WireShark提示系统版本太低不支持, 然而老版本安装包似乎不工作...

用RawCap在上面跑, 抓完打包回传, 发现只有接收的包, 没有发送的包.

然后回来看看官网, 果然是有限制的.


看来还是要老老实实修改现有程序加上收发数据日志.

我讨厌维护陈旧的各种编码不规范且自作聪明的项目

不能因为他们那时候因对基础类库不熟悉就原谅

标签: 软件故障诊断 抓包

评论(0) 引用(0) 浏览(2852)

Powered by emlog 去你妹的备案 sitemap