仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 975|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之ASP.NET MVC 3晋级至MVC 5.1的遭受:“已增加了具有不异键的项”仓酷云 ...

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
那做企业软件是不是最好用J2EE?比来将一个项目从ASP.NETMVC3晋级至方才公布的ASP.NETMVC5.1,晋级后发明一个ajax哀求呈现了500毛病,日记中纪录的具体非常信息以下:
  1. System.ArgumentException:已增加了具有不异键的项。(Anitemwiththesamekeyhasalreadybeenadded)在System.Collections.Generic.Dictionary`2.Insert(TKeykey,TValuevalue,Booleanadd)在System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionarybackingStore,Stringprefix,Objectvalue)在System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionarybackingStore,Stringprefix,Objectvalue)在System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContextcontrollerContext)在System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContextcontrollerContext)在System.Web.Mvc.ControllerBase.get_ValueProvider()在System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContextcontrollerContext,ParameterDescriptorparameterDescriptor)在System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContextcontrollerContext,ActionDescriptoractionDescriptor)在System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallbackasyncCallback,ObjectasyncState)在System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallbackcallback,Objectstate,Int32timeout)在System.Web.Mvc.Async.AsyncResultWrapper.Begin[TResult](AsyncCallbackcallback,Objectstate,BeginInvokeDelegatebeginDelegate,EndInvokeDelegate`1endDelegate,Objecttag,Int32timeout)在System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContextcontrollerContext,StringactionName,AsyncCallbackcallback,Objectstate)
复制代码

固然成绩是因为晋级至MVC5.1引发的,但本着“碰到成绩,先嫌疑本人”的准绳,反省了一下代码,居然在js代码中发明了一个存在已久的初级毛病:
  1. varpagingBuider={"PageIndex":1};functionbuildPaging(pageIndex){pagingBuider.pageIndex=pageIndex;$.ajax({data:JSON.stringify(pagingBuider),contentType:application/json;charset=utf-8});}
复制代码

PageIndex在赋值时写成了pageIndex(第1个字母年夜写P写成了小写p),在js中开首字母小写也是标准写法,事先多是直觉性地写出来的,以是这个初级毛病无可非议。
/*这时候你大概不由要问:为何本人给本人谋事,开首字母用年夜写呢?哎,我也有我的心事,这段js代码是在服务端依据C#对象的属性天生的,C#的标准是开首字母年夜写*/
因为如许一个初级毛病,在ajax哀求时发送给服务真个json字符串酿成了如许:
  1. {"PageIndex":1,"pageIndex":2}
复制代码
这时候找茬的干劲一涌而出,一个年夜年夜的问号出现在长远。。。

为何ASP.NETMVC3能包涵这个毛病,而且失掉准确的值(PageIndex=2),而ASP.NETMVC5.1却不克不及呢?是MVC5.1更松散了仍是气度更局促了?
猎奇心的使令下,实验在ASP.NETMVC的开源代码中一探求竟。


  • 用git签出ASP.NETMVC的源代码——https://git01.codeplex.com/aspnetwebstack
  • 用VS2013翻开办理计划,在办理计划办理器中搜刮到JsonValueProviderFactory
在AddToBackingStore办法中找到了非常的激发点(最初1行代码backingStore.Add(prefix,value)):
  1. privatestaticvoidAddToBackingStore(EntryLimitedDictionarybackingStore,stringprefix,objectvalue){IDictionary<string,object>d=valueasIDictionary<string,object>;if(d!=null
复制代码
前天傍晚我发表了《net网页编程的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-19 17:51:40 来自手机 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-24 15:13:42 | 只看该作者
但是目前在CGI中使用的最为广泛的是Perl语言。所以,狭义上所指的CGI程序一般都是指Perl程序,一般CGI程序的后缀都是.pl或者.cgi。
谁可相欹 该用户已被删除
地板
发表于 2015-2-1 17:29:47 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
小魔女 该用户已被删除
5#
发表于 2015-2-4 05:54:27 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
活着的死人 该用户已被删除
6#
发表于 2015-2-4 13:10:29 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
admin 该用户已被删除
7#
发表于 2015-2-8 09:32:37 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
乐观 该用户已被删除
8#
发表于 2015-2-25 08:23:25 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
分手快乐 该用户已被删除
9#
发表于 2015-2-25 21:49:21 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
精灵巫婆 该用户已被删除
10#
发表于 2015-3-11 15:32:43 | 只看该作者
提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
冷月葬花魂 该用户已被删除
11#
发表于 2015-3-18 22:56:31 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
再见西城 该用户已被删除
12#
发表于 2015-3-26 18:20:52 | 只看该作者
ASP.net的服务器,要求安装一个.net环境,当然我这里指的是windows系统,顺便点一下,.net只能放在windows环境里来运行。Asp.net1.1的就装Framework1.1,Asp.net2.0的就装Framework2.0。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-4 18:34

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表