ASP.NET: Bu yöntem, uygulamanın başlatma öncesi başlatma aşamasında çağrılamaz


135

IIS 6.0 üzerinde çalışan bir ASP.NET MVC 3 sitesi almaya çalışıyorum.

Şu anda sunucudan bir sayfa istediğimde aşağıdaki hata veriyor:

Ayrıştırıcı Hata Mesajı: Bu yöntem, uygulamanın başlatma öncesi başlatma aşamasında çağrılamaz.

bu satırda:

<add name="MyMembershipProvider" type="NS.MyMembershipProvider" connectionStringName="MyDatabase" applicationName="/MySite"/>

Ben tamamen güdük ve 6.0 ve 7.0 arasındaki farklar, ASP.NET uygulama yaşam döngüsü hakkında bir ipucu yok. Üzerinde MSDN sayfalarını okumak çok yardımcı olmadı.

Herhangi bir görüş veya soruşturma için iyi bağlantıları var mı? :)


1
VS localhost web sunucusu (Cassini) MVC 2 ile aynı sorunu var.
Morten Christiansen

1
Aynı sorun (ve çözüm) IIS 7.0 üzerindeki MVC 3 için de geçerli gibi görünüyor.
CrazyPyro

2
Ayrıca yeni bir proje ile MVC4 ve IIS6 ile bu sorunu var. Webmatrix. * Kaldırılarak giderildi, aşağıdaki cevaba bakınız.
Andrew Backer

Aynı hatayla karşılaştım, ancak bir üyelik sağlayıcısı bağlamında değil, bu yüzden kabul edilen cevap yardımcı olmadı. Yapılandırma bölümünde montajı belirtmeden aptalca bir hata yapmış olduğum anlaşılıyor. Hatayı silmek için bölüm adını "tamamen.kaliteli.name.of.type, assembly.name" olarak değiştirdim.
FishesCycle

Yanıtlar:


253

Bunu web.config dosyasına (appSettings bölümünde) ekleyin:

<add key="enableSimpleMembership" value="false"/>
<add key="autoFormsAuthentication" value="false"/>

DÜZENLE:

Neden soruyorsun olanlar için, MVC 3'te açıklanan bilinen bir sorundur sürüm notları Daha fazla detay burada


3
Bunu biraz genişletebilir misiniz? Web.config içinde nerede? Anahtarlar ne yapar? Bu anahtarların çevrimiçi belgelerini bulmakta sorun yaşıyorum.
Kennet Belenky

2
Anlıyorum. Güvenlik ve üyelik kurallarını otomatik olarak tanımlar, böylece özel kurallar eklemeden önce bunları geçersiz kılmanız gerekir. Zor.
Jonathan Allen

4
Yeni bir proje oluşturuyorum, bu hata oluşmuyor ve bu anahtarları eklemem gerekmiyor. Mevcut projemde, çalışmak için bu anahtarları eklemek zorunda kaldım, neden ??
ridermansb

2
Neden? Birisi bazı açıklama / belgelere bağlantı verebilir mi?
Matt Kocaj

1
İlk satır MVC4'te benim için düzeltti: <add key = "enableSimpleMembership" value = "false" />
angularsen

39

Bazı uygulamalarımı ASP.NET MVC3'ten MVC4'e yükselttikten sonra bu hatayı alıyordum. WebMatrix meclislerinin (WebMatrix.WebData.dll ve WebMatrix.Data.dll) bir sonucuydu. Bu başvuruları ve derlemeleri / bin dizininden kaldırdım ve bu sorunu halletti.


2
@rboarman - Bu beni tekrar tekrar düzeltti. Derlemelerin hala / bin dizininde bulunmadığından emin misiniz?
Justin Helgerson

Anahtarı yukarıda açıklandığı gibi eklemek sorunu çözdü. WebMatrix.WebData.dll ve WebMatrix.Data.dll'nin varlığı her iki şekilde de bir fark yaratmadı.
rboarman

MVC4RC'den RTM'ye yükselttiğimde bu benim için düzeltildi. Yeni bir proje yaparak ve ilgili tüm bitleri kopyalayarak işe başladım. Kod değişikliği yapmadım ve web.config dosyasında da önemli değişiklikler yoktu. Garip.
Andrew Backer

1
Benim için düzelttim. Azure için birkaç şey yüklediğim, projeyi kurduğum, bunun istediğim gibi olmadığına ve TFS aracılığıyla geri alma yaptığına karar verdiğim bir durumdaydım, bu yüzden tüm kodum çalışırken ne olduğu KİMLİKLE. Ancak, bin klasörüm biraz daha ağırdı. WebMatrix derlemelerini manuel olarak temizlemek (projede Clean'i çağırmanın aksine) çalıştı. Teşekkürler Ek0nomik.
Yetti

Teşekkürler. Bu benim için düzeltildi.
corix010

8

@ Ek0nomik haklı. Biz göç MembershipProvideryeniye ExtendedMembershipProviderbize sunulan yeni işlevler bazı yararlanmak için izin WebMatrix ad. Varsayılan olarak Basit Üyelik bir nedenden dolayı etkindir, bu nedenle, öğesini kullanmak istemedikçe açıkça devre dışı bırakmak zorunda kaldık SimpleMembershipProvider.

Tek yapmamız gereken bunu web.config dosyasına eklemekti:

<add key="enableSimpleMembership" value="false"/>

Basit Üyeliğin etkinleştirilmesi, Sağlayıcı başlatma kodunun Application_Start işleyicisinden önce yürütülmesine neden oldu. Uygulama yapımız, yürütülecek ilk şey App_Start olmasını gerektiriyor. Şahsen ben her zaman bunu beklerdim ama Basit Üyelik bu davranışı değiştirir. Dikkat.


6

Eh, bu hatayı aldım ve yanlışlıkla bir .cshtml dosyasını projemin kök dizinine kopyaladım. Projeye bile dahil edilmedi. Bunu sildi ve hata gitti. Bu IIS7 üzerinde MVC3 ile oldu. Bu sorunu yaşayan bazı insanların aynı teknede olduğunu hayal ediyorum.


2

Bu, bir Uygulamada çok erken yapılan bazı Yansıma çağrılarından kaynaklanır. Diğer cevaplardaki Web.Config önerileri böyle bir Yansıma çağrısının yapılmasını engelledi. Ancak benim durumumda:

Entity Framework kullanıyorum ve koştu update-database. Bende var:

Bu yöntem, uygulamanın başlatma öncesi başlatma aşamasında çağrılamaz.

Anlaşıldığı üzere, tüm ad alanlarında / projelerinde tüm kodu almak için yakın zamanda değiştirilen bir kitaplığı kullanan bir kodumuz vardı. Özellikle, şöyle denir:

System.Web.Compilation.BuildManager.GetReferencedAssemblies()

Kaboom. Bu, bu belirsiz hataya neden oldu. EF Taşıma işlemleri, uygulamanın yarı çalışan ve yarısı çalışmayan bir garip bölgede çalışır; yani yukarıdaki yöntem, Taşıma işlemlerinin çağıracağı herhangi bir kod tarafından asla çağrılamaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.