2012-04-20 8 views
5

MVC4'te yeni bir web uygulaması oluşturarak ve tüm dosyaları kopyalayıp son olarak birleştirerek web uygulamanızı MVC3'ten 4'e yükselttim. web.config. Tümü mevcut web uygulamasıyla iyi çalışır, ancak bugün çok tuhaf bir hatayı fark ettim - eğer varsayılan kukla uygulamasıyla yeni bir API denetleyicisi oluşturmaya çalışırsam ve sonra bu api'ye (ör./Api/olaylar) göz atarsam, Could not load type hatası alıyorum. Ben app yeniden ve tekrar URL'yi vurursan garip olan şu ki, esas bu 2 arasında dönüşümlü, yaklaşık şikayetçi farklı montaj gibi görünüyor:Bir MVC web uygulamasını el ile 3'ten 4'e yükseltin, API Denetleyicileri ekleyemiyorum

Could not load type 'System.Web.Razor.Parser.SyntaxTree.CodeSpan' from assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

ve

Could not load file or assembly 'Microsoft.Scripting, Version=1.1.0.20, Culture=neutral, PublicKeyToken=7f709c5b713576e1' or one of its dependencies. The system cannot find the file specified. 

Benim web.config aşağıdaki montaj bağlama bilgileri içerir:

<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> 

Ve onun içinde tamam bitleri var gibi benim packages.config görünür:

<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" /> 

Hatta hala bana aynı hatayı (Dosya veya montaj Microsoft.Scripting yüklenemedi)

sağlayan yeni mvc4 web uygulaması, bir "vanilya" tek benim web.config kopyalayana denedim
+0

, sen Microsoft.Scripting adında bir montaj var mı değil mi web.config gelen şu satırları kaldırmayı deneyin? Ve System.Web.Razor.Parser.SyntaxTree ad alanında bir CodeSpan sınıfınız var mı? –

cevap

7

<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> 
İlgili konular