2010-02-19 16 views
10

Bu post okudum ve ControllerExtensions.RedirectToAction yöntemini kullanmak istedim. Ama ben System.Security.VerificationException var diyor ki: type argument '[MyController type]' tip parametresi 'T' kısıtlamasını ihlal ediyor. aşağıdaki gibiMVC Contrib VerificationException

Benim denetleyicisi ilan edilir:

public class ProductsSearchController : Controller 
    { 
     ... 
    } 

Yardım beni lütfen. Ayrıca en son MvcContrib kitaplığını here'dan yüklemeye çalıştım. Bana yardım etmedi.

İlginç bir gerçek farkettim. Bu istisnayı sadece birim testlerinden çağırırken yapıyorum. Ancak web sitesinden kullanımda bir istisna yoktur. Ancak düzgün çalışmıyor gibi görünüyor. Bir nesneyi şu şekilde ifade edilen eyleme geçtiğimde:

Sadece bu nesnenin .ToString'i çağırınız! Ve böyle url olsun:

ProductsSearch = WebShop.FinderModel.Filters.ProductsFilter

yanlış nedir filtre?

+1

Yönlendirmeyi yaptığınız çizgiyi gösterir misiniz? –

+0

bu döndürür.RedirectToAction (x => x.Index (filter)); – Serhiy

cevap

23

Bu sorunu yaşıyorum.

System.Web.Mvc sürüm 4.0.30319 ile birlikte MvcContrib sürüm 2.0.95.0 kullanıyordum.

Sorun, MvcContrib'in System.Web.Mvc'in önceki bir sürümüne başvurmasıydı.

Mvc 2 ile MvcContrib'in eski bir sürümünü kullanıyorsanız, MvcContrib'ın en son sürümünü indirmek ve başvurmak için yeterli olması gerekir. Eğer .NET 4. ve MVC 3 kullanıyorsanız size birim test projesi için App.Config dosyasını güncellemeniz gerekir aşağıdaki (eklemeyi gerekebilir): -

<configuration> 
... 

    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

.... 
</configuration> 

Ayı akılda MVC'nin farklı bir sürümünü kullanıyorsanız sürüm numaralarını değiştirmeniz gerekebilir. (ör. bu düzenleme sırasında oldVersion="1.0.0.0-5.1.0.0" ve newVersion="5.2.0.0" kullanmanız gerekir).

Ayrıca bunu web projenize eklemeniz de gerekebilir. Test projenize yalnızca istisnai bir durum kazandırıyorsanız, bu bölüm zaten var ve web.config'inizde doğrular; oradan kopyalayıp yapıştırabilirsiniz.

Kod Analizini kullanıyorsanız, bağlayıcı yeniden yönlendirmeye uyması için Assembly Binding Redirection and Code Analysis numaralı telefonu da görmeniz gerekir.

+1

Sadece bu sorunu yaşıyordum ve bu yazıyı buldum. Çalışma zamanı düğümümü Mvc projesinden birim sınama projesi yapılandırma dosyasına kopyaladı ve hepsi çalıştı. Benden de teşekkürler :) –

+3

Bu da şu anda MVC4 (bugün itibariyle beta) için çalışıyor. Sadece eski sürümleri "1.0.0.0-3.0.0.0" ve "4.0.0.0" sürümlerine dönüştürün. – klabranche

+0

Teşekkürler, çok teşekkürler! –