asp.net – 手动将MVC Web应用程序从3升级到4,无法添加API控制器
发布时间:2020-12-16 07:11:52 所属栏目:asp.Net 来源:网络整理
导读:我最近通过在MVC4中创建一个新的Web应用程序,并将所有文件复制完毕,最后合并web.config,将我的Web应用程序从MVC3升级到了4.一切都适用于现有的网络应用程序,但是我今天刚刚注意到一个非常奇怪的错误 – 如果我尝试使用默认的虚拟实现创建一个新的API控制器,
我最近通过在MVC4中创建一个新的Web应用程序,并将所有文件复制完毕,最后合并web.config,将我的Web应用程序从MVC3升级到了4.一切都适用于现有的网络应用程序,但是我今天刚刚注意到一个非常奇怪的错误 – 如果我尝试使用默认的虚拟实现创建一个新的API控制器,然后浏览到该api(例如/ api / events),我得到一个无法加载类型错误.奇怪的是,如果我重建应用程序,并再次点击URL,它似乎是一个不同的程序集,它主要是在这两个之间交替:
Could not load type 'System.Web.Razor.Parser.SyntaxTree.CodeSpan' from assembly 'System.Web.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35'. 和 Could not load file or assembly 'Microsoft.Scripting,Version=1.1.0.20,PublicKeyToken=7f709c5b713576e1' or one of its dependencies. The system cannot find the file specified. 我的web.config包含以下程序集绑定信息: <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> <dependentAssembly> <!--<assemblyIdentity name="FluentValidation" publicKeyToken="a82054b837897c66" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />--> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> 而且我的packages.config看起来好像包含了所有正确的位: <package id="AspNetMvc" version="4.0.20126.16343" /> <package id="AspNetRazor.Core" version="2.0.20126.16343" /> <package id="AspNetWebApi" version="4.0.20126.16343" /> <package id="AspNetWebApi.Core" version="4.0.20126.16343" /> <package id="AspNetWebPages.Core" version="2.0.20126.16343" /> <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> <package id="Microsoft.Web.Optimization" version="1.0.0-beta" /> <package id="System.Net.Http" version="2.0.20126.16343" /> <package id="System.Net.Http.Formatting" version="4.0.20126.16343" /> <package id="System.Web.Http.Common" version="4.0.20126.16343" /> <package id="System.Web.Providers" version="1.1" /> <package id="System.Web.Providers.Core" version="1.0" /> 我甚至尝试使用来自新的mvc4网络应用程序的“vanilla”复制我的web.config,这仍然给我同样的错误(无法加载文件或程序集Microsoft.Scripting) 解决方法
尝试从web.config中删除这些行
<dependentAssembly> <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Durandal和ASP.NET MVC约定
- geoIP从ASP.NET中查找国家/地区
- 在asp.net之后的回发动作刷新页面
- asp.net – 如何从Visual Studio 2010 SP1运行时捕获IIS Ex
- asp.net – IIS 6.0和.Net 4的Default.aspx?
- ASP.NET MVC要求我重新验证PNG文件,而不是GIF或JPEG
- asp.net – .Net Core 2.0 – 获取AAD访问令牌以与Microsof
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之验证
- asp.net-mvc – 使用AppFabric缓存在MVC SessionState中使用
- asp.net – 多租户,或不是多租户