ASP.NET sayfalarında Visual C# .NET kullanarak özel rapor oluşturma

Makale çevirileri Makale çevirileri
Makale numarası: 306355 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Visual C# .NET kod yakalayabilir ve ASP.NET ortaya çıkan hatalar için yanıt vermek için nasıl kullanılacağını açıklar. ASP.NET işleme seçeneklerini gelen geleneksel Microsoft Active Server Pages (ASP) hata geliştirdi. ASP.NET, uygulamanızdaki hataları birkaç farklı düzeylerde işleyebilir.

ASP.NET uygulamasındaki yenilikler

ASP.NET nasıl işleneceğini ve hataları yanıt çeşitli gelişmeler sunar. Geleneksel ASP hataları "On Error Resume Next" (veya JScript try-catch bloğu) işlemek. Alternatif olarak, Microsoft Internet Information Services (IIS) 5.0 çalıştırıyorsanız, bir özel hata raporlama sayfası oluşturmak için ASPError nesnesini kullanın. Ancak, bu yaklaşım s?n?rlamalar? vard?r.

ASP.NET, işlemek ve ASP.NET uygulamasını çalıştırdığınızda oluşabilecek hatalar yanıt birkaç düzeyleri sağlar. ASP.NET, bindirme ve ortaya çıkan hatalar için yanıt vermek izin üç ana yöntem sunar: Page_Error, Application_Errorve uygulama yapılandırma dosyasının (Web.config).

Bu makalede, ASP.NET uygulamanızda bu yeni özellikleri kullanabilmek nasıl gösterir. Bu özel hata sayfaları ve ASP.NET ile doğrudan ilişkili olduğu gibi genel hata raporlama sağlar makalede olsa da, bu makalenin diğer hata try-catch-finally bloğu ve ortak dil çalışma zamanı (CLR) özel durum sistemi gibi yaklaşımlar işleme açıklanmaz.

Page_Error yönteminin nasıl kullanılacağı

Page_Error olay işleyicisi sayfa düzeyinde oluşan hataları yakalamak için bir yol sağlar. (İzlemek için örnek kod gibi) yalnızca hata bilgilerini görüntüleyebilir, günlüğe olay kaydetmek veya başka bir eylemi gerçekleştirmek veya.

Not Bu örnek, yalnızca gösterim amacıyla tarayıcıda ayrıntılı hata bilgilerini görüntüler. Ayrıntılı bilgi özellikle Internet üzerinde uygulama çalışırken uygulama son kullanıcıya görüntülerken dikkatli olmak isteyeceksiniz. Bir hata oluştuğunu bildiren ve özel hata ayrıntılarını olay günlüğünde gerçekten günlük kullanıcı için bir ileti görüntülemek için daha uygun bir eylem olacaktır.

Bu örnek bir hata oluşmasının Page_Load olay işleyicisinde zorlar null bir durum yaratır. Page_Error olay işleyicisi kullanarak gösteren başlangıç sayfası oluşturmak için şu adımları izleyin.
  1. Yeni bir dosya PageEvent.aspxto, projenizin adlı eklemek için şu adımları izleyin:
    1. Microsoft Visual Studio .NET açın.
    2. Çözüm Gezgini'nde, proje düğümünü sağ tıklatın, Ekle' nin üzerine ve sonra Add Web Form'utıklatın.
    3. Adı metin kutusuna yazın. PageEvent.aspx, sonra da ' ı tıklatın.
  2. PageEvent.aspx için aşağıdaki kodu ekleyin:
    <script language=C# runat="server">
    void Page_Load(object sender, System.EventArgs e)
    {
    	throw(new ArgumentNullException());
    }
    
    public void Page_Error(object sender,EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"<b>Error Caught in Page_Error event</b><hr><br>" + 
    			"<br><b>Error in: </b>" + Request.Url.ToString() +
    			"<br><b>Error Message: </b>" + objErr.Message.ToString()+
    			"<br><b>Stack Trace:</b><br>" + 
    	                  objErr.StackTrace.ToString();
    	Response.Write(err.ToString());
    	Server.ClearError();
    }
    </script> 
    					

    Not Bu kod örneğinde, AutoEventWireup özniteliği açıkça ayarlanmamıştır. Açıkça AutoEventWireup özniteliği için assigna değeri değiştirirseniz, varsayılan değer true kullanılır. Visual Studio .NET yourapplications geliştirmek için kullanıyorsanız, Web Form şablonu kod açıkça AutoEventWireup öznitelik değeri falseolarak ayarlar. Varsayılan değer thatASP.NET kullanımları arasında önemli bir fark vardır ve varsayılan değer bu öznitelik için Visual Studio .NET şablonu codeassigns. AutoEventWireup öznitelik değeri falseolarak bildirilen olay işleyicileri için ayarlanmış olup olmadığını.ASPX Sayfası notfire. Thisfunctionality hakkında bilmiyorsanız kafa karıştırıcı olabilir.
  3. Dosya menüsünde Kaydet PageEvent.aspx' ı tıklatın.
  4. Sayfayı sağ tıklatın ve sonra sayfayı çalıştırmak için tarayıcıda görüntüle ' yi tıklatın. Hata durum bildirimi ve kod belirtimlerine reportedaccording.
Not Kod Server.ClearErrorbir çağrı sorunları fark edebilirsiniz. Bu hata Application_Error olay işleyicisine devam etmesini engeller.

Ayrıca, @ Page yönergesinde de Inherits özniteliği not almanız gerekir. Inherits ayarlarsanız, sayfaya göz önce proje oluşturmanız gerekir. Projenin ilk oluşturma değil, aşağıdaki hata iletisini alırsınız:
'Project.PageEvent' geçerli bir tür değil.

Application_Error yönteminin nasıl kullanılacağı

Page_Error olay işleyicisine benzer, Application_Error olay işleyicisi, uygulamanızdaki hataları yakalamak için kullanabilirsiniz. Olayla ilgili uygulama çapındaki kapsamı uygulama hata bilgilerinin günlüğünü veya olabilecek diğer uygulama düzeyi hataları işlemek.

Örnek izlemek için önceki Page_Error kod örneği temel alarak ve Page_Error olay işleyicisinde hata Page_Load yakalanan değil, harekete. Application_Error olay işleyicisi, uygulamanızın Global.asax dosyasında belirtilir. Kolaylık için bu bölümdeki adımları özel durum, Global.asax dosyası olay Application_Error işleyicisinde hata yakalama ve olay günlüğüne yazma hatası yeni bir sayfa oluşturun. Aşağıdaki adımlarda, Application_Error yönteminin nasıl kullanılacağı gösterilmektedir:
  1. Projeniz için AppEvent.aspx adlı yeni bir dosyaya ekleyin.
  2. AppEvent.aspx için aşağıdaki kodu ekleyin:
    <script language=C# runat="server">
    	void Page_Load(object sender, System.EventArgs e)
    	{
    		throw(new ArgumentNullException());
    	}
    </script>
    					

    NotAutoEventWireup özniteliği hakkında "Page_Error" bölümünde ele alınan bilgiler, bu adımda kod örneği için de geçerlidir. Bilgiyi "Page_Error" bölümünde daha ayrıntılı bilgi için bkz.
  3. Dosya menüsünde Kaydet AppEvent.aspx' ı tıklatın.
  4. Bu youthrow AppEvent.aspx sayfanın Page_Load olay işleyicisinde hata yakalamak için Global.asax dosyası Application_Error olay işleyicisi ekleyin. Konsola kullanarak isim uzayı için System.Diagnostics için olay günlüğü'nü kullanmak üzere Global.asax gerekir dikkat edin.

    Global.asax dosyasına aşağıdaki kodu ekleyin:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString()+ 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	Server.ClearError();
    	//additional actions...
    } 
    					
  5. Global.asax dosyası kaydedin.
  6. Visual Studio .NET Yapı menüsünde Oluştur' u tıklatın.
  7. Sayfayı sağ tıklatın ve sonra tarayıcıda görüntüle' yi tıklatın. Bu durumda sayfa boş kalır, ancak, olay günlüğünde yeni bir girdi eklendi hem gerekir. Bu örnek, Olay Görüntüleyicisi'nden erişilebilen uygulama günlüğüne bir giriş yapar. Loggingthe hatasından sonra kullanıcı başka bir daha fazla kullanıcı friendlyerror sayfasına yönlendirmek veya gerekirse bazı ek eylemler gerçekleştirmek isteyebilirsiniz.

Web.config dosyası nasıl kullanılır

Server.ClearError çağırmayın ya da tuzak Page_Error veya Application_Error olay işleyicisi hata, hata ele <customErrors>bölümünde Web.config dosyasındaki ayarları temel. <customErrors>Bölümünde, varsayılan hata sayfası (defaultRedirect) olarak bir yönlendirme sayfası belirtin veya ortaya çıkan HTTP hata koduna göre belirli bir sayfa için belirtin. Kullanıcının aldığı hata iletisini özelleştirmek için bu yöntemi kullanabilirsiniz.

Önceki düzeylerinin, uygulamanızda herhangi yakalanan değil bir hata oluşursa, bu özel sayfa görüntülenir. Bu bölümde Server.ClearError hiç çağrılmamasını Global.asax dosyası alanınını nasıl değiştireceğinizi göstermektedir. Sonuç olarak, hata Web.config dosyasında hata yakalamak için son noktası olarak ele alınır. </customErrors></customErrors>
  1. Yukarıdaki Global.asax dosyasını açın.
  2. Web.configfile içinde hata yüzeyleri emin olmak için Server.ClearError satır dışarı yorum.
  3. Global.asax için yaptığınız değişiklikleri kaydedin. Kodunuzun nowappear aşağıdakine benzer olmalıdır:
    using System.Diagnostics;
    
    protected void Application_Error(object sender, EventArgs e)
    {
    	Exception objErr = Server.GetLastError().GetBaseException();
    	string err =	"Error Caught in Application_Error event\n" +
    			"Error in: " + Request.Url.ToString() +
    			"\nError Message:" + objErr.Message.ToString() + 
    			"\nStack Trace:" + objErr.StackTrace.ToString();
    	EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
    	//Server.ClearError();
    	//additional actions...
    } 
    					
  4. Aşağıdaki kodu ekleyin <customErrors>sectionto özel bir sayfa için kullanıcı yönlendirme:<b00> </b00> </customErrors>
    <customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
    </customErrors>
    						
    Not Böylece ilgili Web sunucu andapplication adları başvuran defaultRedirect özniteliği dosyası yolu değiştirmeniz gerekir.
  5. Bu düzeyde yakalanan hataların sentto varsayılan hata sayfası olduğundan, bu örnek, bir hata sayfası için bir .htm sayfası kullanır böylece ne theuser için sunulan denetlemek için bu yöntemi kullanarak göz önünde ErrorStatus.htm.Keep adlı bir hata sayfası oluşturmanız gerekir. Followingcode için ErrorStatus.htm ekleyin:
    <HTML>
    <HEAD>
    <TITLE></TITLE>
    <META NAME="GENERATOR" Content="Microsoft Visual Studio 7.0">
    </HEAD>
    <BODY>
         <b>Custom Error page!</b>
         <br>
         You have been redirected here from the <customErrors> section of the 
         Web.config file.
    </BODY>
    </HTML>
    					
  6. Ve kodu test, dosyaları kaydetmek, projeyi oluşturmak için tarayıcıda AppEvent.aspx görüntüleyin. Hata oluştuğunda, ErrorStatus.htm sayfasına yönlendirilirsiniz dikkat edin.
Varsayılan hata sayfası <customErrors>bölümünde defaultRedirect özniteliği değeri olarak başvuruda bulunabilir, ancak bağlı ortaya çıkan HTTP hata kodu yönlendirmek için belirli bir sayfa da belirtebilirsiniz. <error>Alt öğesi için bu seçeneği sağlar. Örneğin:<b00> </b00> </error> </customErrors>
<customErrors defaultRedirect="http://hostName/applicationName/errorStatus.htm" mode="On">
	<error statusCode="404" redirect="filenotfound.htm" />
</customErrors>
				
NotDefaultRedirect <customErrors>bölümün içinde belirtilen bir .htm dosyası sayfadır. BEN

<customErrors>Bölüm üzerindeiçin ayarlanmış bir mode özniteli?i eklediğine dikkat edin. Mode özniteli?i hata yeniden yönlendirme nasıl gerçekleştirildiğini denetlemek için kullanılır. Örneğin, uygulama geliştiriyorsanız, büyük olasılıkla gerçek ASP.NET hata iletilerini görmek istediğiniz ve kullanımı daha kolay hata sayfasına yönlendirilmek istemiyorsanız. Mode özniteli?i aşağıdaki ayarları içerir: </customErrors></customErrors>
  • Hakkında: işlenemeyen özel duruma kullanıcı belirtilen defaultRedirect sayfasına yönlendirin. Bu mod, üretimde esas olarak kullanılır.
  • Kapalı: kullanıcılar özel durum bilgilerini alır ve defaultRedirect sayfa değil redirectedto olur. Bu mod, çoğunlukla geliştirmede kullanılır.
  • RemoteOnly: yalnızca yerel bilgisayar sitesi (usinglocalhost tarafından) erişen kullanıcılar özel durum bilgilerini alma. Diğer tüm kullanıcıların defaultRedirect sayfasına yönlendirilirsiniz. Bu mod, hata ayıklama için temel olarak kullanılır.

Sorun giderme

Kendi varsayılan yüklemesinde Microsoft Windows XP ve Microsoft Windows 2000 üzerinde ASP.NET Web uygulama kodu içinde bir alt işlem çalışır. Bu işlem kimliğini ASPNET hesabı adı verilen bir ayrıcalığı olmayan yerel hesap için varsayılan olarak ayarlanır. Beta sürümlerinde ASP.NET işlem kimliğini, güçlü bir yönetim hesap birçok ayrıcalıklara sahip bir makine üzerinde sistemiydi.

Kendi varsayılan yüklemesinde Windows Server 2003'te (IIS 6), ASP.NET Web uygulama kodu içinde bir alt işlem çalışır. Bu işlem kimliği NetworkService olarak adlandırılan sınırlı hesap için varsayılan olarak ayarlanır.

Bu değişiklik ve bu makaledeki kod ve ek erişim haklarına gereksinim duyabileceğiniz başka bir kod çalıştıran nasıl efekt hakkında daha fazla bilgi için aşağıdaki Web sitelerini ziyaret edin:
Sürüm 1 için Microsoft .NET Framework güvenlik değişiklikleri
http://msdn2.microsoft.com/en-us/library/ms994923.aspx

Referanslar

Daha fazla bilgi için aşağıdaki Microsoft Web sitelerini ziyaret edin:
.NET özel durum yönetiminde

HttpServerUtility.ClearError yöntemi

MSDN .NET Geliştirme Merkezi

Microsoft .NET giriş sayfası

Özellikler

Makale numarası: 306355 - Last Review: 29 Ekim 2013 Salı - Gözden geçirme: 2.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 1.0
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2003 Standard Edition
Anahtar Kelimeler: 
kbconfig kbhowtomaster kbweb kbmt KB306355 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.
Makalenin İngilizcesi aşağıdaki gibidir: 306355

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com