2008-12-01 22 views
18

VirtualPathProvider'ı özelleştirme uygulaması sırasında, özel VirtualPathProvider'ın Global.asax veya AppInitialize yönteminde MSDN http://msdn.microsoft.com/en-us/library/system.web.hosting.virtualpathprovider.aspx'a göre kaydedilebileceğini buldum. Ancak, MSDN AppInitialize yöntemini açık bir şekilde açıklamıyor.AppInitialize yöntemi ASP.NET'te çağrıldığında?

App_code klasöründeki herhangi bir statik AppInitialize yöntemi, başlangıçta ASP.NET çalışma zamanı tarafından otomatik olarak çağrılır mı?

cevap

31

AppInitialize() yöntemi hakkında değerli küçük belgeler olmamakla birlikte, böyle bir yöntem imzası içeren App_Code klasöründe herhangi sınıf senin varsayımı doğru şunlardır:

public static void AppInitialize() 

çağrılır zaman Asp.Net uygulaması başlatıldı. App_Code'un Asp.Net için özel bir klasör olduğunu ve içerideki her şeyin biraz farklı bir şekilde ele alındığını unutmayın. App_Code klasörünün tüm küçük quirklerinde (yukarıda adı geçen) belgelerin bulunması için iyi şanslar.

AppInitialize yöntemi tanımlanır

:

ancak Başka bir şey hatırlamıyorum sadece bir sınıf AppInitialize() yöntemi için bir imza içerebilir ya da başka buna benzer zamanında bir derleyici hatası elde edecektir hem 'App_Code.SomeClassOne' hem de 'App_Code.SomeClassTwo' içinde.

Yani bu mükemmel geçerli iken: bu sizin için biraz şeyler temizler :)

umarım

public class SomeClassOne 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now; 
    } 
} 

public class SomeClassTwo 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeTwo"] = DateTime.Now; 
    } 
} 

:

public class SomeClassOne 
{ 
    public static void AppInitialize() 
    { 
     HostingEnvironment.Cache["InitializationTimeOne"] = DateTime.Now; 
    } 
} 

Bu yukarıda bahsettiğim derleyici hatası oluşturur

+0

Bu çok kullanışlıdır. App_Code özel davranışlarının başka örneklerini nerede bulacağınız hakkında bir fikrin var mı? –

+2

Bunu bir süredir WCF Web servisinde çalıştım ve aniden gizemli bir şekilde çalışmayı bıraktı. Web hizmetini Visual Studio'da çalıştırırsam, başlatma işlemi gerçekleşir, ancak IIS'ye dağıtırsam hiçbir başlatma gerçekleşmez. Bunun işe yarayacağına yemin edebilirim ve şimdi aniden değil. Herhangi bir fikir? – Farinha

+0

Sorun bulundu. Webservice yayınlama klasörüne kopyalanan "App_Code" klasörünün olmaması için "İçerik" ten "Derleme" ye başlatma işlemini içeren .cs dosyasındaki "Oluşturma Eylemi" ni değiştirdim. Pekala, bu yapılamaz ... – Farinha

İlgili konular