迁移MVC网站至2012服务器遇SelectListItem方法未找到错误求助
解决MVC迁移后SelectListItem方法找不到的问题
这个错误我之前迁移MVC项目时也碰到过,大概率不是服务器缺少组件,而是MVC版本不匹配或者程序集绑定配置出了问题,给你几个具体的排查和解决步骤:
1. 检查项目中System.Web.Mvc的引用配置
- 打开你的项目,右键点击
System.Web.Mvc引用,查看「属性」里的版本号,确认这个版本和新服务器上安装的MVC版本一致(比如是3.0.0.0还是4.0.0.0)。 - 一定要把「复制本地」属性设为
True!很多时候就是因为没勾选这个,发布后bin目录里没有MVC的dll,服务器上的版本又和项目依赖的不匹配,导致找不到方法。
2. 配置Web.config的程序集绑定重定向
如果项目依赖的MVC版本和服务器上的有差异,或者你同时装了MVC3和4,需要在Web.config里添加重定向规则,让所有MVC相关的请求都指向正确的版本。在<configuration>节点下添加:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <!-- oldVersion覆盖你项目用到的版本范围,newVersion改成服务器上安装的版本 --> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime>
如果你的项目原本用的是MVC3,就把newVersion改成3.0.0.0。
3. 确认服务器上的.NET Framework版本匹配
- MVC3需要.NET Framework 4.0,MVC4支持.NET 4.0或4.5,Windows Server 2012默认自带.NET 4.5,但如果你的项目目标框架是4.0,要确认服务器上已经安装了.NET 4.0(虽然4.5向下兼容,但偶尔还是会出现版本绑定问题)。
- 可以在服务器的「控制面板-程序和功能」里查看已安装的.NET Framework版本。
4. 修复MVC安装(可选)
如果上面的步骤都没解决,可能是服务器上的MVC安装不完整。可以下载对应版本的MVC安装包(比如MVC3或MVC4的安装程序),运行时选择「修复」选项,确保所有相关组件都正确安装。
额外排查:有没有自定义同名类?
虽然概率很低,但可以检查一下你的项目里有没有自己定义的SelectListItem类,可能和系统的System.Web.Mvc.SelectListItem冲突了,导致程序找不到正确的方法。
按照这些步骤排查下来,应该能解决这个「Method not found」的错误。
内容的提问来源于stack exchange,提问作者Richard S.
相关产品推荐
相关产品推荐

