从http://blog.csdn.net/happyhippy迁过来了:)
从http://blog.csdn.net/happyhippy迁过来了:)
将陆续文章从我以前的blog上的文章转过来:)
本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2006/12/23/601136.html,如需转载请自行联系原作者
zhouzhuang.net这个网址我们已经备案,为什么解析过来还是让我们备案
zhouzhuang.net这个网址我们已经备案,为什么解析过来还是让我们备案,我们在备案前,担心有问题,还特别问过你们。
命名空间“HaiChuang.AMAC”中不存在类型或命名空间名称“WCFClient”。是否缺少程序集引用?
今天在Visual Studio 2010中编译文件的时候报出了以下错误:
经过确认引用的dll没有问题,把引用重新添加过来,重启Visual Studio 2010都没有效果。
错误一直都在,一直都在!!!
后来发现该工程所引用的dll是net framework 4.0生成的。
而该工程是.Net Framework 4.0 Client Profile生成的,如下:
修改该工程的目标框架为net framework 4.0,再次编译,搞定。
命名空间“HaiChuang.AMAC”中不存在类型或命名空间名称“WCFClient”。是否缺少程序集引用?
今天在Visual Studio 2010中编译文件的时候报出了以下错误:
经过确认引用的dll没有问题,把引用重新添加过来,重启Visual Studio 2010都没有效果。
错误一直都在,一直都在!!!
后来发现该工程所引用的dll是net framework 4.0生成的。
而该工程是.Net Framework 4.0 Client Profile生成的,如下:
修改该工程的目标框架为net framework 4.0,再次编译,搞定。
.NET CORE控制器里的方法取传参的坑
把以前的ASP.NET MVC的项目改成用.NET CORE来写,写好了部署上去了,结果问题一大堆,今天慢慢检查了一下,发现一个大坑:
写控制器里的方法接收参数数都是直接写在控制器的方法参数里的,如:
public ActionResult CallBack(string msg, string orderno){
......
}
这样的话不管是在浏览器里打http://localhost/aaa/callback?msg=success&orderno=3231354
还是在postman中用POST调用传msg和orderno参数也能接收到
然后用ASP.NET MVC的项目的时候,第三方发送通知到我的这个方法里,我能接收到msg和orderno参数,
但是用ASP.NET CORE的项目的时候,第三方发送通知到我的这个方法里,我接收不到msg和orderno参数,
都是相同的上面那一段代码的
找了好久才发现问题所在,原来第三方发送通知到这个方法里传参数不是通过get传msg=success&orderno=3231354,也不是通过POST传msg和orderno参数的,而是通过POST直接把一个JSON字符串:
{
"msg":"success",
"orderno":"55474969"
}
给传过来的,
然后自己在postman中测试了一下,asp.net mvc的就正常能接收到,但是asp.net core的就接收不到
000.png
111.png
要改的话就只能改ASP.NET CORE的代码,不在方法参数里写,自己写代码从POST过来的数据流中把JSON字符串取出来,再用JSON.NET转为对象再用就行了!!!
ASP.NET Core 阶段性总结
本文转自田园里的蟋蟀博客园博客,原文链接:XXXXXXXX,如需转载请自行联系原作者
自从年前用 ASP.NET 5 磕磕绊绊重写了一个项目后 (2015.12),就没怎么关注 ASP.NET 5 相关内容了,为啥?因为实际应用问题太多,而且不是正式版本,变化实在太快,可能你今天了解的东西,明天就被否定了,但现在回过头看,不关注的话就会漏失一些有价值的东西,虽然看看新闻了解到了,但还应该去深入的思考下,并且经历微软开源一步一步走向成熟的过程,这对于我们来说,也是一个机遇。
这段时间,我觉得主要发生了两件事:
ASP.NET 5 已终结,迎来 ASP.NET Core 1.0 和 .NET Core 1.0
微软宣布将推迟 ASP.NET Core 的发布日期对我们影响最大的是 ASP.NET 5 重命名为 ASP.NET Core 1.0,我简单列举几个:
搜索资源不匹配,我应该是搜 ASP.NET vNext?还是 ASP.NET 5?还是 ASP.NET Core 1.0 呢?并且以前写的有关文章资料,都搜索不到了。
程序包名称变化,这个对已经用 ASP.NET 5 开发的项目影响最大,比如Microsoft.AspNet.Mvc变成了Microsoft.AspNetCore.Mvc.Core,相关程序集名称都需要更改。
运行命令变更(包含运行时),主要是增加新的东西 CLI,比如dnu restore变成了dotnet restore等等。
...上面是对于我们开发者所造成的影响,其实对于微软来说,重命名所带来的额外工作也非常大,这也就造成了 ASP.NET Core 发布日期的推迟,就像新闻中所提到的:这是个很好的改变,但为什么来得这么迟呢?如果像 ASP.NET vNext 改名为 ASP.NET 5 那么迅速就好了。
除了 ASP.NET Core 1.0 重命名外,我觉得还有一个最大的变化,就是 dnx 到 cli 的改变,这部分内容需要深入探讨下,在探讨之前,大家可以先看下这篇博文:K & DN 的前世今生(微软开源命名变革)
k -> dotnet -> dn(最终版)
kpm -> dotnet -> nuget -> dotnpm -> dotnetpm -> dnpm(最终版)
kvm -> dotnetsdk -> dotnvm -> dotnetvm -> dnvm(最终版)
k and kvm -> dotnet -> 合并(否决)
kre/xre -> dnx(未经讨论确定)上面是很久之前 GitHub 上一个命名讨论的 Issue,现在回过头看,是不是很有意思呢,因为大家一开始探讨的命名就是现在微软的命名,微软实在做了太多无用功,cli 是从 dnx 变迁过来的,我们先了解下 dnx 是什么?
The DNX (a .NET Execution Environment) contains the code required to bootstrap and run an application, including the compilation system, SDK tools, and the native CLR hosts.
说白了,我觉得 dnx 就是 ASP.NET 5 应用程序的运行时(某段时间内),为什么这样说?我们先了解下 dnx 的历程,dnx 最初被命名为 xre,然后又被命名为 kre,需要注意的是,那时候还没有 CoreCLR,详见《魅力 .NET:从 Mono、.NET Core 说起》的文章最后,xre 中的代码并不是很完善,有很多的代码都是从 mono 借鉴过来的,包括运行时都是 mono,所以,看上面 dnx 的介绍,它其实就是一个运行时,并且因为 dnx 不是很完善,围绕它的命令也就改来改去。
后来微软开发了 CoreCLR,它是一个微软自己的运行时,GitHub 地址不再放在 aspnet 下,而是放在了 dotnet 下,但其实是 CoreCLR 并不是很完善,从开源地址贴出来后,就一直在开发的状态,并不能真正的拿来使用 (跨平台),所以 dnx 一直被 ASP.NET 5 使用着,但后来随着 CoreCLR 的逐步完善,微软就开始考虑抛弃 dnx 了,cli 也就诞生了。
需要注意的是,cli 并不是由 dnx 重命名来的,而是演化过来的,它们俩是两个完全不同的概念,另外,cli 也不是公共语言基础(Common Language Infrastructure)的简写,而是 .NET Core Command Line Interface,翻译过来就是 .NET Core 命令行接口。
CLI, This repo contains the .NET Core command-line (CLI) tools, used for building .NET Core apps and libraries through your development flow (compiling, NuGet package management, running, testing, ...).
This repo contains the source code for cross-platform .NET Core command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.
上面和 dnx 的定义对比下,就会发现它们是完全不同的,那 cli 到底包含哪些内容,在上面已经有了详细的解释,.NET Core 命令行接口及其实现,它的作用就是在应用程序和运行时之间搭起一座沟通桥梁,命名形式以dotnet *开始,我觉得 cli 是微软以后所有命令实现的一种规范,应该不会再出现杂七杂八的命令了。
最后,看一段 About .NET Core 的内容:
.NET Core is a cross-platform implementation of .NET that is primarily being driven by ASP.NET 5 workloads, but also by the need and desire to have a modern runtime that is modular and whose features and libraries can be cherry picked based on the application’s needs.
.NET Core consists of the CoreCLR runtime and the CoreFX framework libraries. A set of cross-platform tooling can be found in the .NET CLI. The Roslyn compiler and LLILC compiler are sibling projects that support .NET Core. These projects are active on GitHub. You can participate by creating issues or collaborate on development. The main goal of the project is to create a modular, performant and cross-platform execution environment for modern applications.
.NET Core 一开始是 ASP.NET 5 跨平台的一种实现,后来被逐步变化为 .NET 跨平台的核心运行时,.NET Core 包含 CoreCLR 和 CoreFX,一个 .NET CLI,Roslyn 和 LLILC 编译器,主要目标:modular(模块化)、performant(高性能)和 cross-platform execution environment(跨平台执行环境)。
关于高性能,可以看看最近的这篇新闻:《ASP.NET Core 每秒能处理 115 万个请求,是 ASP.NET 4.6 的 23 倍(5 万个请求)》,另外,ASP.NET Core 1.0 的应用示例:《ASP.NET Core 1.0 Hello World》
本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/asp-net-mvc-RouteExistingFiles.html,如需转载请自行联系原作者
刚刚,JDK 12 早期试用版发布了!你学的过来吗?
今天,在官网看到 JDK 12 的早期使用版本发布了,但是网站上面还未列出主要的更新内容。因此,还尚不知晓是否包含我们之前提到过的 JEP 和 一些新特性。该网站已经有 JDK12 的安装包和相关 API 文档。如果你想了解 JDK 12 的更多细节,可以查看hg开发记录和相关问题记录来查看。最后,不得不佩服这个更新速度,你学得过来吗?你目前还停在哪个版本呢?参考http://jdk.java.net/12https://download.java.net/java/early_access/jdk12/docs/apihttp://hg.openjdk.java.net/jdk/jdk/log?revcount=10000&rev=reverse(%22jdk-12%2B1%22%3A%3A%22jdk-12%2B2%22)https://bugs.openjdk.java.net/browse/JDK-8206440?jql=project%20%3D%20JDK%20AND%20fixversion%20%3D%2012%20and%20%22resolved%20in%20build%22%20%3D%20b02%20order%20by%20component%2C%20subcomponent
由Effiproz DataBase来看.NET开源数据库发展
这篇文章本来应该写在上个周末, 可是临时有事给耽误了,上周五在MSDN上看到Effiproz DataBase发布了1.2版本. 在Effiproz以前也用过几个嵌入式开源数据库. 不过Effiproz DataBase是纯C#编写的. 开发者就可以将它移植到具备CLR的大多数环境中,包括.NET Compact、Mono、Windows 7以及Silverlight. 和Windows Phone . EffProze所具有的特点对于.NET程序员来说 确实是非常诱人的.但是如果对Effiproz细究发展过程还是比较曲折的过程. 当然这个过程也绝非单单对Effiporz而言的. 同时也透漏出.NET开源数据库在演变中发展整个过程.
<1>初始 Effiproz
Effiproz官方对Effiproz宣传语:Effiproz Embedded C# DataBase Fast Light Weight For .NEt /Asp.Net/.NET CF/Silverlight /Windows Phone 7/Mono.
Effproz是一个针对.NET程序员的轻量级跨平台嵌入式数据库.如果你第一次接触直观了解Effproz 请参考EffiProz:面向.NET程序员的跨平台嵌入式数据库.
Effproz是一个用纯C#编写的开源数据库,我们可以发现很多.NET的开源项目都是从优秀的Java项目移植过来的:我用得比较多像NHibernate、DotLucene(暂停开发...)、iTextSharp、Quartz.NET等.Effproz本身是从java的HSQLDB 1.9/2.0移植过来的,支持独立和嵌入两种部署模式。带有ADO.net Entity Framework Provider. 其实在SQlite 2000年出现时 后来演变出来一个.NEt版本ADO.NET Provider for SQLite. 也正是在这个时候Mark Tutt,写了第一个.NET数据库(据我所知):SharpHSQL,这是从Java界应用非常广泛的HSQLDB移植过来的,而HSQLDB又是从HSQL衍生过来的,但Mark Tutt做完第一个版本就停止对它更新和维护. 其实这也没什么问题.但 Mark Tutt这个版本在应用比较突出问题是只能在内存中使用 一断电内存消失所有的数据也就彻底丢失了. 这就涉及到SharpHSQL无法由内存中数据写入硬盘上文件进行数据持久化.
但是转机出现在Mark Tutt之后,Andresv接过了SharpHSQL,并让它成功地让数据保存到文件,于是乎真正意义上第一个纯.NET版本数据库终于出现了. 但是可悲的Andrew仿佛得到前辈MarkTutt的真传, 在第一个版本推出后Andresv就停止了对SharpHSQL进行维护和更新. 以至目前Java的HSQLDB发展的热火朝天.而SharpHSQL还像一个弱女子一样在.NET中乱撞 弱不禁风.
在SharpHSQL短暂停滞后.关于.NET开源数据库呼声也渐渐沉寂下来. 也恰巧在这时出现以令人眼前一亮的Minosse Relational DataBase System[MRDS]一个大型的纯C#开源数据库系统. 不是一个单一的数据引擎.而是一个数据管理系统. 但是对>NET开源数据库而言 这样好景并不长.可悲的是 Mionsse最终页难逃开源的厄运, 在昙花一现喜悦之后,便就失去继续开发的动力. Mionsse最终夭折.开源中.NET数据库呼声再次跌入低潮. 直至今年推出的:Effiproz. 才渐渐发生扭转.
如上整个历程可谓是.NET开源数据库发展很曲折的一个过程. Effiporz出现在一定程度上打破这样的局面.
<2>.NET开源数据小结
写到这里我们大概了解.NET开源数据库.发展的整个过程. 那么日常开发中虽然.NEt平台开源的数据库选择远远比不上Java平台开源数据库在数量和质量上的优势. [Java开源数据库清单] 但相对而言 还有不少开源或免费的数据库程序可供.Net应用程序使用.
<1>SQlite从2000年出来到现在已经历经多个版本变革. 同时也在.NET开源中使用比较多开源数据库之一.。.Net程序可以使用来自phxsoftware的System.Data.SQLite,此外常用的还有sqlite-net,System.Data.SQLite和sqlite-net都是通过P/Invoke调用C/C++的DLL实现,而csharp-sqlite是纯C#代码实现的.Sqlite运用范围非常广. 诺基亚的手机操作操作系统塞班(Symbian)、Mozilla、Safari、Chrome和桌面应用程序等. 当然在国内运用最广当然是从属移动的短信平台——飞信上适用.
<2>MySQl就用多说了.都很熟悉.体积小、速度快、总体拥有成本低 尤其一点是开源特点.MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQLAB公司,在2008年1月16号被Sun公司收购,可是MySQL收购不到1年之久, 2009年4月20日美国数据软件巨头Oracle就把Sun连同所属业务收购. le.至于MySQL在收购后应用前景也引起争议.
<3>DB4O完全原生于Java和.NET, 100% 面向对象, 抛开对象-关系映射, 为嵌入式应用优化, 开源,.db4o 可节省研发的费用和时间 面向对象的数据库,有.Net和Java两个版本。支持C/S和Embed两种使用模式。.Net版本程序需要Full Trust Level权限..[很冷门 不常用] 如果有兴趣可以看看DB4O和其他数据库性能比对报告
<4>要说一下DeveelDB,基本和Effiporz发布时间前后先不长,它的开发语言是C#基于.NET平台.DeveelDB 是一个采用 .NET 开发的 SQL 数据库管理系统,实现了 SQL-99 规范,支持包括事务处理、触发器、存储过程和函数,发布在google code上:Google code_DeveelDB
时当然免费使用还有VistaDB、SQL Server CE、SQL Server Express 等常用.
<3>Effiporz展望
EffiProz的作者Irantha Suwandarathna 在一次采访中透露下一个版本中.Effiporz将支持移动平台[我会在后面演示]. 此外,EffiProz还支持Entity Framework,下一版本(1.3)将支持MonoTouch。对MonoDroid的支持也在计划当中. 我会在后面逐篇幅介绍Effiporz多个方面使用. 以及于SQlExpress和SQLite进行使用技巧上比对.
参考资料:
OpenSource DAtaBase in C#
Wiki Effiporz [Wiki百科上关于所有开源数据库小结 非常全面 可供参考]
DBO4 Express Page
Java开源数据分类列表
开源中国社区-.NET开源数据库
本文转自chenkaiunion 51CTO博客,原文链接:http://blog.51cto.com/chenkai/764705
ASP.NET Core 阶段性总结
自从年前用 ASP.NET 5 磕磕绊绊重写了一个项目后 (2015.12),就没怎么关注 ASP.NET 5 相关内容了,为啥?因为实际应用问题太多,而且不是正式版本,变化实在太快,可能你今天了解的东西,明天就被否定了,但现在回过头看,不关注的话就会漏失一些有价值的东西,虽然看看新闻了解到了,但还应该去深入的思考下,并且经历微软开源一步一步走向成熟的过程,这对于我们来说,也是一个机遇。
这段时间,我觉得主要发生了两件事:
ASP.NET 5 已终结,迎来 ASP.NET Core 1.0 和 .NET Core 1.0
微软宣布将推迟 ASP.NET Core 的发布日期对我们影响最大的是 ASP.NET 5 重命名为 ASP.NET Core 1.0,我简单列举几个:
搜索资源不匹配,我应该是搜 ASP.NET vNext?还是 ASP.NET 5?还是 ASP.NET Core 1.0 呢?并且以前写的有关文章资料,都搜索不到了。
程序包名称变化,这个对已经用 ASP.NET 5 开发的项目影响最大,比如Microsoft.AspNet.Mvc变成了Microsoft.AspNetCore.Mvc.Core,相关程序集名称都需要更改。
运行命令变更(包含运行时),主要是增加新的东西 CLI,比如dnu restore变成了dotnet restore等等。
...上面是对于我们开发者所造成的影响,其实对于微软来说,重命名所带来的额外工作也非常大,这也就造成了 ASP.NET Core 发布日期的推迟,就像新闻中所提到的:这是个很好的改变,但为什么来得这么迟呢?如果像 ASP.NET vNext 改名为 ASP.NET 5 那么迅速就好了。
除了 ASP.NET Core 1.0 重命名外,我觉得还有一个最大的变化,就是 dnx 到 cli 的改变,这部分内容需要深入探讨下,在探讨之前,大家可以先看下这篇博文:K & DN 的前世今生(微软开源命名变革)
k -> dotnet -> dn(最终版)
kpm -> dotnet -> nuget -> dotnpm -> dotnetpm -> dnpm(最终版)
kvm -> dotnetsdk -> dotnvm -> dotnetvm -> dnvm(最终版)
k and kvm -> dotnet -> 合并(否决)
kre/xre -> dnx(未经讨论确定)上面是很久之前 GitHub 上一个命名讨论的 Issue,现在回过头看,是不是很有意思呢,因为大家一开始探讨的命名就是现在微软的命名,微软实在做了太多无用功,cli 是从 dnx 变迁过来的,我们先了解下 dnx 是什么?
The DNX (a .NET Execution Environment) contains the code required to bootstrap and run an application, including the compilation system, SDK tools, and the native CLR hosts.
说白了,我觉得 dnx 就是 ASP.NET 5 应用程序的运行时(某段时间内),为什么这样说?我们先了解下 dnx 的历程,dnx 最初被命名为 xre,然后又被命名为 kre,需要注意的是,那时候还没有 CoreCLR,详见《魅力 .NET:从 Mono、.NET Core 说起》的文章最后,xre 中的代码并不是很完善,有很多的代码都是从 mono 借鉴过来的,包括运行时都是 mono,所以,看上面 dnx 的介绍,它其实就是一个运行时,并且因为 dnx 不是很完善,围绕它的命令也就改来改去。
后来微软开发了 CoreCLR,它是一个微软自己的运行时,GitHub 地址不再放在 aspnet 下,而是放在了 dotnet 下,但其实是 CoreCLR 并不是很完善,从开源地址贴出来后,就一直在开发的状态,并不能真正的拿来使用 (跨平台),所以 dnx 一直被 ASP.NET 5 使用着,但后来随着 CoreCLR 的逐步完善,微软就开始考虑抛弃 dnx 了,cli 也就诞生了。
需要注意的是,cli 并不是由 dnx 重命名来的,而是演化过来的,它们俩是两个完全不同的概念,另外,cli 也不是公共语言基础(Common Language Infrastructure)的简写,而是 .NET Core Command Line Interface,翻译过来就是 .NET Core 命令行接口。
CLI, This repo contains the .NET Core command-line (CLI) tools, used for building .NET Core apps and libraries through your development flow (compiling, NuGet package management, running, testing, ...).
This repo contains the source code for cross-platform .NET Core command line toolchain. It contains the implementation of each command, the native packages for various supported platforms as well as documentation.
上面和 dnx 的定义对比下,就会发现它们是完全不同的,那 cli 到底包含哪些内容,在上面已经有了详细的解释,.NET Core 命令行接口及其实现,它的作用就是在应用程序和运行时之间搭起一座沟通桥梁,命名形式以dotnet *开始,我觉得 cli 是微软以后所有命令实现的一种规范,应该不会再出现杂七杂八的命令了。
最后,看一段 About .NET Core 的内容:
.NET Core is a cross-platform implementation of .NET that is primarily being driven by ASP.NET 5 workloads, but also by the need and desire to have a modern runtime that is modular and whose features and libraries can be cherry picked based on the application’s needs.
.NET Core consists of the CoreCLR runtime and the CoreFX framework libraries. A set of cross-platform tooling can be found in the .NET CLI. The Roslyn compiler and LLILC compiler are sibling projects that support .NET Core. These projects are active on GitHub. You can participate by creating issues or collaborate on development. The main goal of the project is to create a modular, performant and cross-platform execution environment for modern applications.
.NET Core 一开始是 ASP.NET 5 跨平台的一种实现,后来被逐步变化为 .NET 跨平台的核心运行时,.NET Core 包含 CoreCLR 和 CoreFX,一个 .NET CLI,Roslyn 和 LLILC 编译器,主要目标:modular(模块化)、performant(高性能)和 cross-platform execution environment(跨平台执行环境)。
关于高性能,可以看看最近的这篇新闻:《ASP.NET Core 每秒能处理 115 万个请求,是 ASP.NET 4.6 的 23 倍(5 万个请求)》,另外,ASP.NET Core 1.0 的应用示例:《ASP.NET Core 1.0 Hello World》
本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/aspnet-core1.html,如需转载请自行联系原作者
上面的代码会出现一种问题:当点击按钮的时候,onblur 会执行,onblur 一般是用来检查文本框的内容,我们并不希望在点击按钮的时候执行,并且 onblur 会执行在 onclick 之前。
解决方式:
var tid;
onblur = function(){
tid = setTimeout(function(){
//do blur save
}, 25);
};
onclick = function(){
clearTimeout(tid);
//do click save
}
主要作用是延迟 onblur 的执行,在 onclick 执行的时候,取消 onblur 的执行(注意,点击按钮的时候,onblur 才会被触发,所以延迟 25 ms是没问题的)。
本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/javascript-onblur-onclick.html,如需转载请自行联系原作者
(转)安装vs2010后不能创建.net2.0项目的解决方法
本文转载:http://www.fangpage.com/read-65.aspx
新安装VS2010中文旗舰版,在新建项目的时候您会发现只有.net framework 4,没有.net framework 2.0 和3.5。但是看到介绍明明是可以选择的啊?
如果不能选择.net2.0开发,以前的项目都转过来的话工作量之大可想而知,经过查找资料发现,原来需要安装一个.net framework 3.5 sp1。安装了这个之后,再打开VS2010,就可以选择了。
[