2010-11-13 13 views
5

üzerinde kayıt hatası Benim bir mvc 3 web uygulaması var, ama benim paylaşılan web hosting şirketi sadece MVC 2 destekler. Ben de mvc 3 ilgili dlls dağıtmak ve mvc 3 beta kadar sunucu üzerinde iyi çalıştı.Küresel Filtre MVC 3 RC

Dün, bilgisayar ortamımı mvc 3 RC'ye yükselttim ve web uygulamamı yeniden oluşturdum. Uygulama benim yerel bilgisayarımda iyi çalışır, ancak dağıtımı ve barındırma sunucusunda çalıştırdığımda bir hata yapar. i Global.asax içinde küresel filtreyi kayıt çalıştığınızda

[MissingMethodException: Method not found: 'Void System.Web.Mvc.GlobalFilterCollection.Add(System.Object)'.] 
Myweb.MvcApplication.RegisterGlobalFilters(GlobalFilterCollection filters) in c:\my\Global.asax.cs:18 
Myweb.MvcApplication.Application_Start() in c:\my\Global.asax.cs:36 

Eğer Gördüğünüz gibi, o Mvc.GlobalFilterCollection.Add (nesne) yöntemini bulamadığını söylüyor.

Küresel bir filtre kaydetmezseniz, tüm web barındırma sunucusunda iyi çalışır.

Bu hatayı nasıl çözebilirim?

düzenleme: Bu mvc3 beta, barındırma sunucusunun GAC'sinde kayıtlı gibi görünüyor. Onlar değil dediler, ama benim app başvurulan System.Web.Mvc.dll konumunu kontrol ettim.

+0

Sunucuya hangi DLL dosyalarını dağıttığını listeleyebilir misiniz? MVC 3'te şimdi System.Web.WebPages ve diğerleri de dahil olmak üzere dağıtılması gereken birkaç DLL var. .NET Framework'ün kendisinde olmayan hemen hemen her şeyin, kutudaki depo dizisine dağıtılması gerekir. – Eilon

+0

@Eilon, Bu şeyleri dağıtmıştım. [System.Web.Mvc (ver.3), Microsoft.Web.Infrastructure.dll, System.Web.Helpers, System.Web.Razor, System.Web.WebPages, System.Web.WebPages.Razor]. –

+0

@Eilon, ancak yukarıdaki bu diskleri sildikten sonra bile, Razor tabanlı web ile MVC 3'üm çalışıyor. Bunların zaten GAC sunucusuna kurulduğunu merak ettim, ancak teknik destek sorumlusu bunun olmadığını söyledi. Uygulama havuzu, kaldırılan dll'lerin etkisini almak için geri dönüştürülmeli mi? –

cevap

5

Tanımınıza göre Makinenizde kullandığınız MVC 3 sürümü ile sunucunuza yüklenen sürüm arasında mksmatch var gibi görünüyor. Parametreleri GlobalFilterCollection.Add olarak değiştirdik ve MVC 3 RC'yi kullanarak uygulamanızı PC'nizde derlediğiniz gibi görünüyor, ancak MVC 3 Beta'ya sahip bir bölüme yerleştiriyorsunuz. Lütfen System.Web.Mvc.dll dosyasının sürümünün sizin için doğru olduğuna emin olun.

Düzenleme: Eilon'un yorumunu onaylamak için, MVC 3 Beta, GAC'ye yüklüyse, uygulamanızın bin klasöründe RC sürümü olsa bile her zaman kazanacaktır.

+0

Thnx marcind. Aslında çoktan rc versiyonunu kopyaladım. Bu yüzden, System.Web.Mvc.dll dosyasının yerini görmek için global.asax dosyasına giriş yaptım ve GAC_MSIL klasöründe bulunduğunu öğrendim. Mvc3'ün GAC'lerinde olmayan hosing şirketinin teknik destek ekibinden onay aldım, ama beta versiyonu öyle görünüyor. –

+0

@marcind, o zaman GAC beta sürüm dll yerine/bin dizininde RC sürüm System.Web.Mvc.dll başvuru için zorlamak için bir yol var mı? 'BindingRedirect' çalışabilir mi? –

+1

@Tk, GAC her zaman bu senaryoda kazanacaktır, çünkü DLL'lerin aynı sürümü vardır. – Eilon