ArgumentException: 已添加了具有相同键的项。
此问题出现在asp.net mvc 5 中,前端向后端请求数据,方法的参数是模型,比如 Add(Student m), 结果浏览器显示的状态是500并返回错误提示ArgumentException,如标题,堆栈信息就不贴了,网上可以搜到很多这个问题的解决办法。
这个问题出现的原因中,除了前端传的参数中含有两个以上大小写不同的参数名,还有就是模型定义问题,可能有两个大小写不同的属性。以上均是因为大小写不同的参数名重复添加到字典里面,才会报这个错。
解决问题思路是:
第一、看完堆栈信息,不是自己代码出的错,直接调试源码,此法万能,没有调试不了的bug,就怕断点断在哪里都不知道,且对小白极不友好,仅适合高端玩家,不推荐。
第二、用尝试,模仿的方式去试探是定位是哪一块的原因。比如新增一个方法名不同,参数一样的方法尝试请求(用这个方法解决了前端元素绑定点击事件报 search 方法不存在的问题 onclick=“search();”,没深究,search可能是关键字什么的,改个名字就好了)。还有用同样方法名,改变参数再尝试请求,这时会发现不用那个模型作为参数就不报错了,那么问题就出在模型上了,这时候先把问题记下来,先改用常规的参数接收写法,多写几个参数,保证不在报错,之后再研究是模型哪里的问题。这类办法需要有相当的经验,才能想到,往哪方面尝试比较容易定位问题,看个人功底。
第三、回滚。问题总是突然出现的,很多同学应该都经历过,之前明明还好好地,怎么上个厕所回来就这样了。别急先保存一份现在的代码,然后一点点撤销最后面改的代码,每撤销一次就运行测试一次,撤销到上一次提交代码之前,你总能发现是改了哪一行引起的问题,找到之后,再看看什么 是写法不对还是什么,或者换个写法,换个姿势什么的就好了。此类办法也是万能的,不管有没有相关经验,都可以手动回滚到以前正确的时候,以此来定位然后解决问题。
总结:以上思路适合各种语言各种环境出现问题时可以参考的思路,使得在没有相关知识经验的时候也能解决问题。其实不是我们解决不了问题,是很多同学碰到不熟悉的问题时,通常都会一脸懵逼不知所措无从下手,还有习惯了把问题丢给别人的就想也不想直接问人家,这个问题怎么办,代码也不贴,问题虽然解决了但是却得不到提高,打了怪也不涨经验。
最新文章
- shell——awk
- appium+python:自己写的一个滑动控件的方式
- Android 实现卫星菜单(精简版)
- FreeSWITCH的TLS加密
- 放飞App:移动产品经理实战指南
- POJ - 1741 Tree
- php的fread函数的一个巨大的坑
- linux bash下 快捷键
- 真机测试,Xcode报错:process launch failed: Security
- JavaScript escape() 函数
- ";sfc/scannow"; 修复系统,提示 ";windows资源保护无法启动修复服务";(win7)
- sublime3安装
- Spring Security4实例(Java config 版) —— Remember-Me
- JavaScript手工编写滚动条组件
- docker之Dokcerfile 常用指令
- 【Spring学习笔记-MVC-17】Spring MVC之拦截器
- 3d引擎列表
- IntelliJ idea的初次使用
- python系列7进程线程和协程
- Sqoop操作实践
热门文章
- np.frombuffer()
- 在UNITY中按钮的高亮用POINT灯实现,效果别具一番风味
- 解决Lightmap在PC上与ios和Android上表现不同的问题
- python之多并发socket
- The valid characters are defined in RFC 7230 and RFC 3986
- ubuntu18 realsenseD435i
- OpenGLES.gpus_ReturnNotPermittedKillClient
- 20172325 2017-2018-2 《Java程序设计》第七周学习总结
- sublime的坑
- 设计模式-生成者模式之c#代码