Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede düzeltmeler, standartlara uyumluluk ve güvenlik değişiklikleri ve müşteri geri bildirimlerine dayalı değişiklikler de dahil olmak üzere .NET Framework sürüm 3.5 Service Pack 1 ile .NET Framework sürüm 4 arasındaki geçiş sorunları açıklanmaktadır. Bu değişikliklerin çoğu uygulamalarınızda herhangi bir programlama değişikliği gerektirmez. Değişiklik içerebilecek olanlar için tablonun Önerilen değişiklikler sütununa bakın. Önemli değişiklikler, ASP.NET ve Windows Presentation Foundation (WPF) gibi alanlara göre ayrılmıştır.
Bu makaledeki sorunlara daha üst düzey bir genel bakış için bkz. .NET Framework 4'e Geçiş Kılavuzu.
Yeni özellikler hakkında bilgi için bkz. .NET Framework 4'teki Yenilikler.
ASP.NET ve Web
Ad Alanları: System.Web, System.Web.Mobile, System.Web.Security, System.Web.UI.WebControls
Derleme: System.Web (System.Web.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Tarayıcı tanım dosyaları | Tarayıcı tanım dosyaları, yeni ve güncelleştirilmiş tarayıcılar ve cihazlar hakkında bilgi içerecek şekilde güncelleştirildi. Netscape Navigator gibi eski tarayıcılar ve cihazlar kaldırıldı ve Google Chrome ve Apple iPhone gibi daha yeni tarayıcılar ve cihazlar eklendi. Uygulamanız kaldırılan tarayıcı tanımlarından birinden devralınan özel tarayıcı tanımları içeriyorsa bir hata görürsünüz. HttpBrowserCapabilities Nesne, tarayıcı tanım dosyaları tarafından yönlendirilir ve sayfanın Request.Browse özelliği tarafından erişilebilir kılınır. Bu nedenle, ASP.NET 4'te bu nesnenin bir özelliğine erişilerek döndürülen bilgiler, ASP.NET önceki bir sürümünde döndürülen bilgilerden farklı olabilir. |
Uygulamanız eski tarayıcı tanım dosyalarını kullanıyorsa, bunları aşağıdaki klasörden kopyalayabilirsiniz: Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers Dosyaları ASP.NET 4 için karşılık gelen \CONFIG\Browsers klasörüne kopyalayın. Dosyaları kopyaladıktan sonra Aspnet_regbrowsers.exe komut satırı aracını çalıştırın. Daha fazla bilgi için web sitesine bakın https://www.asp.net/mobile . |
| ASP.NET'nin karma sürümleri altında çalışan alt uygulamalar | ASP.NET ASP.NET önceki sürümlerini çalıştıran uygulamaların alt öğeleri olarak yapılandırılan 4 uygulama, yapılandırma veya derleme hataları nedeniyle başlatılamıyor olabilir. Oluşan hata, uygulamanın IIS 6.0 veya IIS 7 veya IIS 7.5 altında çalışıp çalışmadığına bağlıdır. | Yapılandırma sisteminin ASP.NET 4 uygulamasını doğru şekilde tanıması için etkilenen uygulamaların yapılandırma dosyalarında değişiklik yapabilirsiniz. Yapmanız gereken değişiklikler hakkında bilgi için, ASP.NET Web sitesindeki ASP.NET 4 Önemli Değişiklikler belgesinde yer alan "ASP.NET 2.0 veya ASP.NET 3.5 Uygulamalarının Altında Çalışan ASP.NET 4 Alt Uygulamalar Başlatılamıyor" bölümüne bakın. |
| ClientID değişiklikleri | ASP.NET 4'teki yeni clientIDMode ayar, ASP.NET'nin HTML öğeleri için özniteliği nasıl oluşturacağını belirtmenize id olanak tanır. ASP.NET'in önceki sürümlerinde varsayılan davranış, AutoIDclientIDMode ayarıyla eşdeğerdi. Varsayılan ayar şudur: Predictable. Daha fazla bilgi için bkz. ASP.NET Web Sunucusu Denetim Kimliği. |
Uygulamanızı ASP.NET 2.0 veya ASP.NET 3.5'ten yükseltmek için Visual Studio kullanıyorsanız, araç Web.config dosyasına .NET Framework'ün önceki sürümlerinin davranışını koruyan bir ayarı otomatik olarak ekler. Ancak, IIS'deki uygulama havuzunu .NET Framework 4'e hedef olarak değiştirerek bir uygulamayı yükseltirseniz, ASP.NET varsayılan olarak yeni modu kullanır. Yeni istemci kimliği modunu devre dışı bırakmak için Web.config dosyasına aşağıdaki ayarı ekleyin:<pages clientIDMode="AutoID" /> |
| Kod erişim güvenliği (CAS) | ASP.NET 3.5'e eklenen ASP.NET 2.0 NET özellikleri.NET Framework 1.1 ve .NET Framework 2.0 kod erişim güvenliği (CAS) modelini kullanır. Ancak, ASP.NET 4'te CAS'nin uygulanması önemli ölçüde elden geçirilmiştir. Sonuç olarak, genel derleme önbelleğinde çalışan güvenilen kodu kullanan kısmi güven ASP.NET uygulamaları çeşitli güvenlik özel durumları ile başarısız olabilir. Makine CAS ilkesinde kapsamlı değişikliklere dayanan kısmi güven uygulamaları da başarısız olabilir ve güvenlik özel durumları oluşturabilir. | Aşağıdaki örnekte gösterildiği gibi, yapılandırma öğesindeki yeni legacyCasModel özniteliğini kullanarak kısmi güven ASP.NET 4 uygulamalarını ASP.NET 1.1 ve 2.0'ın davranışlarına geri döndürebilirsiniz.<trust level= "Medium" legacyCasModel="true" />Önemli: Eski CAS modeline geri dönmek azaltılmış güvenliği temsil edebilir. Yeni ASP.NET 4 kod erişimi güvenlik modeli hakkında daha fazla bilgi için bkz. ASP.NET 4 Uygulamalarında Kod Erişim Güvenliği. |
| Yapılandırma dosyaları | .NET Framework ve ASP.NET 4 için kök yapılandırma dosyaları (machine.config dosyası ve kök Web.config dosyası), uygulama Web.config dosyalarında bulunan ortak yapılandırma bilgilerinin çoğunu ASP.NET 3.5'te içerecek şekilde güncelleştirildi. Yönetilen IIS 7 ve IIS 7.5 yapılandırma sistemlerinin karmaşıklığı nedeniyle, ASP.NET 4 altında ve IIS 7 ve IIS 7.5 altında ASP.NET 3.5 uygulamalarını çalıştırmak ASP.NET hatalara veya IIS hatalarıyla sonuçlanabilir. | Visual Studio'daki proje yükseltme araçlarını kullanarak ASP.NET 3.5 uygulamalarını ASP.NET 4'e yükseltin. Visual Studio 2010, ASP.NET 3.5 uygulamasının Web.config dosyasını ASP.NET 4 için uygun ayarları içerecek şekilde otomatik olarak değiştirir. Ancak, yeniden derleme olmadan .NET Framework 4 kullanarak ASP.NET 3.5 uygulamalarını çalıştırabilirsiniz. Bu durumda, uygulamayı .NET Framework 4 ve IIS 7 veya IIS 7.5 altında çalıştırmadan önce uygulamanın Web.config dosyasını el ile değiştirmeniz gerekebilir. Yapmanız gereken belirli değişiklik, Hizmet Paketi (SP) sürümleri de dahil olmak üzere üzerinde çalıştığınız yazılımın birleşimine bağlıdır. Bu değişiklikten etkilenen olası yazılım kombinasyonları ve belirli kombinasyonlarla ilgili sorunların nasıl çözüleceği hakkında bilgi için, ASP.NET Web sitesindeki ASP.NET 4 Değişikliklere Yol Açan Unsurlar belgesinde "Yeni ASP.NET 4 Kök Yapılandırmasıyla İlgili Yapılandırma Hataları" bölümüne bakın. |
| Görselleştirmeyi denetleme | ASP.NET'in önceki sürümlerinde, bazı denetimler devre dışı bırakamadığınız işaretleme oluşturuyordu. Varsayılan olarak, bu işaretleme türü artık ASP.NET 4'te oluşturulmaz. İşleme değişiklikleri aşağıdaki denetimleri etkiler:Image* ve ImageButton denetimleri artık bir border="0" özniteliği işlemez.* Bundan BaseValidator türetilen sınıf ve doğrulama denetimleri artık varsayılan olarak kırmızı metin işlemez.* HtmlForm kontrolü bir name özniteliği render etmez.* Denetim Table artık bir border="0" özniteliği oluşturmaz.Kullanıcı girişi için tasarlanmamış denetimler (örneğin, Label denetimi), disabled="disabled" özellikleri Enabled olarak ayarlanmışsa (veya bu ayarı kapsayıcı denetimden devralmışlarsa), false özniteliğini artık görüntülemez. |
Uygulamanızı ASP.NET 2.0 veya ASP.NET 3.5'ten yükseltmek için Visual Studio kullanıyorsanız, araç Web.config dosyasına eski işlemeyi koruyan bir ayarı otomatik olarak ekler. Ancak, IIS'deki uygulama havuzunu .NET Framework 4'e hedef olarak değiştirerek bir uygulamayı yükseltirseniz, ASP.NET varsayılan olarak yeni işleme modunu kullanır. Yeni işleme modunu devre dışı bırakmak için Web.config dosyasına aşağıdaki ayarı ekleyin:<pages controlRenderingCompatibilityVersion="3.5" /> |
| Varsayılan belgelerde olay işleyicileri | ASP.NET 4, html öğesinin formaction öznitelik değerini, varsayılan bir belgenin eşlendiği uzantısız bir URL'ye istekte bulunulduğunda boş bir dize olarak işler. ASP.NET'in önceki sürümlerinde, bir istek http://contoso.com'e yapıldığında, Default.aspx'e yönlendirilirdi. Bu belgede, açılış form etiketi aşağıdaki örnekte olduğu gibi işlenecektir.<form action="Default.aspx" />ASP.NET 4'te, bir http://contoso.com isteği yine Default.aspx isteğiyle sonuçlanır, ancak ASP.NET, HTML açılış form etiketini aşağıdaki örnekte olduğu gibi işler.<form action="" />action Öznitelik boş bir dize olduğunda, IIS DefaultDocumentModule nesnesi Default.aspx için bir alt istek oluşturur. Çoğu koşulda, bu alt istek uygulama kodu için saydamdır ve Default.aspx sayfası normal şekilde çalışır. Ancak, yönetilen kod ile IIS 7 veya IIS 7.5 Tümleşik modu arasındaki olası bir etkileşim, yönetilen .aspx sayfalarının alt istek sırasında düzgün çalışmamasına neden olabilir. Aşağıdaki koşullar oluşursa, varsayılan bir .aspx belgesine yönelik alt istek bir hataya veya beklenmeyen davranışa neden olur:* form öğesinin action özniteliği "" olarak ayarlanmış bir .aspx sayfası tarayıcıya gönderilir.* Bu form ASP.NET'e geri gönderiliyor. * Yönetilen bir HTTP modülü, varlık gövdesinin Request.Form veya Request.Params gibi bir bölümünü okur. Bu, POST isteğinin varlık gövdesinin yönetilen belleğe okunmasını sağlar. Sonuç olarak, varlık gövdesi artık IIS 7 veya IIS 7.5 Tümleşik modunda çalışan yerel kod modülleri tarafından kullanılamaz.* IIS DefaultDocumentModule nesnesi sonunda çalışır ve Default.aspx belgesine bir alt istek oluşturur. Ancak, varlık gövdesi bir yönetilen kod parçası tarafından zaten okunduğu için, alt isteğe gönderilecek bir varlık gövdesi bulunmamaktadır.* HTTP işlem hattı alt istek için çalıştırıldığında, .aspx dosyalarının işleyicisi işleyici yürütme aşamasında çalışır. Varlık gövdesi olmadığından, form değişkeni ve görünüm durumu yoktur. Bu nedenle, .aspx sayfa işleyicisi için hangi olayın (varsa) tetiklenmesi gerektiğini belirlemek için kullanılabilir bilgi yoktur. Sonuç olarak, etkilenen .aspx sayfası için geri gönderme olay işleyicilerinin hiçbiri çalışmaz. |
Bu değişiklik sonucunda ortaya çıkabilecek sorunları aşmanın yolları hakkında bilgi almak için, ASP.NET Web sitesindeki ASP.NET 4 Önemli Değişiklikler belgesindeki "IIS 7 veya IIS 7.5 Tümleşik Modunda Varsayılan Bir Belgede Olay İşleyicileri Tetiklenmeyebilir" konusuna bakın. |
| Hash algoritması | ASP.NET, form kimlik doğrulaması tanımlama bilgileri ve görüntüleme durumu gibi verilerin güvenliğini sağlamaya yardımcı olmak için hem şifreleme hem de karma algoritmaları kullanır. Varsayılan olarak, ASP.NET 4, çerezler ve görüntüleme durumu üzerindeki karma işlemleri için HMACSHA256 algoritmasını kullanır. ASP.NET'ın önceki sürümleri eski HMACSHA1 algoritmayı kullanıyordu. | form kimlik doğrulama tanımlama bilgileri gibi verilerin .NET Framework sürümlerinde çalışması gereken ASP.NET 2.0 ve ASP.NET 4'i karıştıran uygulamalar çalıştırıyorsanız, Web.config dosyasına aşağıdaki ayarı ekleyerek ASP.NET 4 Web uygulamasını eski HMACSHA1 algoritmayı kullanacak şekilde yapılandırın:<machineKey validation="SHA1" /> |
| Internet Explorer'da barındırma denetimleri | Web'de denetimleri barındırmak için daha iyi çözümler olduğundan, Artık Windows Forms denetimlerini Internet Explorer'da barındıramamalısınız. Bu nedenle, IEHost.dll ve IEExec.exe derlemeleri .NET Framework'ten kaldırılmıştır. | Web uygulamalarında özel denetim geliştirme için aşağıdaki teknolojileri kullanabilirsiniz: * Bir Silverlight uygulaması oluşturabilir ve tarayıcı dışında çalışacak şekilde yapılandırabilirsiniz. Daha fazla bilgi için bkz. Tarayıcı Dışı Destek. * WPF özelliklerinden yararlanmak için bir XAML tarayıcı uygulaması (XBAP) oluşturabilirsiniz (istemci makinelerinde .NET Framework gerektirir). Daha fazla bilgi için bkz. WPF XAML Tarayıcı Uygulamalarına Genel Bakış. |
| HtmlEncode ve UrlEncode yöntemleri |
HtmlEncode ve sınıflarının UrlEncode ve HttpUtilityHttpServerUtility yöntemleri, tek tırnak işareti karakterini (') aşağıdaki gibi kodlayarak güncelleştirildi:* Bu HtmlEncode yöntemi, tek tırnak işaretinin örneklerini ' olarak kodlar.* Bu UrlEncode yöntemi, tek tırnak işaretinin örneklerini %27 olarak kodlar. |
ve HtmlEncode yöntemlerini kullandığınız UrlEncode yerler için kodunuzu inceleyin ve kodlamadaki değişikliğin uygulamanızı etkileyebilecek bir değişiklikle sonuçlanmadığından emin olun. |
| ASP.NET 2.0 uygulamalarında HttpException hataları | IIS 6'da ASP.NET 4 etkinleştirildikten sonra, IIS 6 üzerinde çalışan ASP.NET 2.0 uygulamaları (Windows Server 2003 veya Windows Server 2003 R2'de) aşağıdaki gibi hatalar oluşturabilir: System.Web.HttpException: Path '/[yourApplicationRoot]/eurl.axd/[Value]' was not found. |
* Web sitesini çalıştırmak için ASP.NET 4 gerekli değilse, siteyi ASP.NET 2.0 kullanacak şekilde yeniden eşle. -veya- * Web sitesini çalıştırmak için ASP.NET 4 gerekiyorsa, alt ASP.NET 2.0 sanal dizinlerini ASP.NET 2.0 ile eşlenen farklı bir Web sitesine taşıyın. -veya- * Uzantısız URL'leri devre dışı bırakın. Daha fazla bilgi için "ASP.NET 2.0 Uygulamaları eurl.axd'ye Başvuran HttpException Hataları Oluşturabilir" bölümüne ASP.NET Web sitesindeki ASP.NET 4'teki Bozulma Değişiklikleri belgesinde bakın. |
| Üyelik türleri | ASP.NET üyelikte kullanılan bazı türler (örneğin, MembershipProvider) System.Web.dll derlemesinden System.Web.ApplicationServices.dll derlemesine taşındı. Türler, istemcideki ve genişletilmiş .NET Framework SKU'larındaki türler arasındaki mimari katmanlama bağımlılıklarını çözümlemek için taşındı. | ASP.NET'nin önceki sürümlerinden yükseltilen ve taşınan üyelik türlerini kullanan sınıf kitaplıkları, ASP.NET 4 projesinde kullanıldığında derlenemiyor olabilir. Öyleyse, sınıf kitaplığı projesine System.Web.ApplicationServices.dlliçin bir referans ekleyin. |
| Menü denetimi değişiklikleri | Denetimde yapılan Menu değişiklikler aşağıdaki davranışla sonuçlanır: * MenuRenderingMode List olarak ayarlandıysa, veya MenuRenderingModeDefault olarak ve ControlRenderingCompatibilityVersion4.0 veya daha sonra olarak ayarlandıysa, PopOutImageUrl özelliğinin hiçbir etkisi yoktur.Eğer StaticPopOutImageUrl ve DynamicPopOutImageUrl özelliklerinde ayarlanan yol ters eğik çizgi (\) içeriyorsa, görüntüler gösterilmez. (ASP.NET önceki sürümlerinde yol ters eğik çizgi içerebilir.) |
* Tek tek menü öğeleri için PopOutImageUrl özelliğini ayarlamak yerine, ebeveyn StaticPopOutImageUrl denetiminin DynamicPopOutImageUrl veya Menu özelliğini ayarlayın. -veya- MenuRenderingMode öğesini Table olarak ayarlayın veya MenuRenderingMode öğesini Default olarak ve ControlRenderingCompatibilityVersion öğesini 3.5 olarak ayarlayın. Bu ayarlar, denetimin Menu önceki ASP.NET sürümlerinde kullandığı HTML tablo tabanlı düzeni kullanmasına neden olur.* Eğer StaticPopOutImageUrl veya DynamicPopOutImageUrl özelliğindeki yol ters eğik çizgi (\) içeriyorsa, eğik çizgi (/) ile değiştirin. |
| Web.config dosyasında mobil derleme | ASP.NET'ın önceki sürümlerinde, altındaki assembliessystem.web/bölümündeki kök Web.config dosyasına System.Web.Mobile.dll derlemesine compilation bir başvuru eklenmiştir. Performansı geliştirmek için bu derlemeye başvuru kaldırıldı.Not: System.Web.Mobile.dll derlemesi ve ASP.NET mobil denetimleri ASP.NET 4'e eklenir, ancak kullanım dışıdır. |
Bu derlemedeki türleri kullanmak istiyorsanız, kök Web.config dosyasında veya uygulama Web.config dosyasında derlemeye bir başvuru ekleyin. |
| Çıktı önbelleğe alma | ASP.NET 1.0'daki bir hata, çıkış önbelleği ayarı olarak Location="ServerAndClient" belirtilen önbelleğe alınmış sayfaların yanıtta Vary:* HTTP üst bilgisi göndermesine neden oldu. Bu, istemci tarayıcılarına sayfayı hiçbir zaman yerel olarak önbelleğe almamalarını söylemenin etkisi oldu. ASP.NET 1.1'de, SetOmitVaryStar üst bilgisini engellemek için çağrılabilen Vary:* yöntemi eklendi. Ancak, hata raporları geliştiricilerin mevcut SetOmitVaryStar davranışın farkında olmadığını gösterir.ASP.NET 4'te HTTP Vary:* üst bilgisi artık aşağıdaki yönergeyi belirten yanıtlardan dışarı aktarilmez:<%@ OutputCache Location="ServerAndClient" %>Artık SetOmitVaryStar üst bilgisinin bastırılması için Vary:* yöntemi gerekli değildir. özniteliği için Location "ServerAndClient" belirten uygulamalarda, çağırmanıza SetOmitVaryStargerek kalmadan sayfalar tarayıcıda önbelleğe alınabilecektir. |
Uygulamadaki sayfaların Vary:* yayması gerekiyorsa, aşağıdaki örnekte gösterildiği gibi AppendHeader yöntemini çağırın.System.Web.HttpResponse.AppendHeader("Vary","*");Alternatif olarak, çıkış önbelleğe Location alma özniteliğinin değerini "Sunucu" olarak değiştirebilirsiniz. |
| Sayfa ayrıştırma | ASP.NET Web sayfaları (.aspx dosyaları) ve kullanıcı denetimleri (.ascx dosyaları) için sayfa ayrıştırıcısı, ASP.NET 4'teki sayfa ayrıştırıcısı, ASP.NET önceki sürümlerindekinden daha katıdır ve önceki sürümlerden daha fazla işaretlemeyi geçersiz olarak işaretler. | Sayfa çalıştırıldığında oluşturulan hata iletilerini inceleyin ve geçersiz işaretlemeden kaynaklanan hataları düzeltin. |
| Pasaport türleri | ASP.NET 2.0'da yerleşik olan Passport desteği kullanımdan kaldırılmış ve Passport'taki değişiklikler (şimdi Live ID SDK'sı) nedeniyle desteklenmiyor. Sonuç olarak, System.Web.Security içindeki Passport ile ilgili türler artık ObsoleteAttribute özniteliğiyle işaretlenir. |
Ad alanında System.Web.Security Passport türlerini (örneğin, PassportIdentity) kullanan tüm kodları Windows Live ID SDK'sını kullanacak şekilde değiştirin. |
| FilePath özelliğindeki PathInfo bilgileri | ASP.NET 4 artık PathInfo, FilePath ve AppRelativeCurrentExecutionFilePath gibi özelliklerden dönen değerlere CurrentExecutionFilePath değerini eklemez. Bunun yerine, PathInfo bilgileri PathInfo içinde bulunabilir. Örneğin, aşağıdaki URL parçasını düşünün:/testapp/Action.mvc/SomeActionASP.NET'nin HttpRequest önceki sürümlerinde özellikler aşağıdaki değerlere sahiptir: * FilePath: /testapp/Action.mvc/SomeAction* PathInfo: (boş) ASP.NET 4'te, HttpRequest özellikler bunun yerine aşağıdaki değerlere sahiptir: * FilePath: /testapp/Action.mvc* PathInfo: SomeAction |
Yol bilgilerini döndürmek için sınıfın HttpRequest özelliklerine güvendiğiniz yerler için kodunuzu inceleyin; kodu yol bilgilerinin döndürülmesiyle ilgili değişiklikleri yansıtacak şekilde değiştirin. |
| İstek doğrulama | İstek doğrulamasını geliştirmek amacıyla, ASP.NET istek doğrulama işlemi istek yaşam döngüsünün daha erken bir aşamasında başlatılır. Sonuç olarak, web hizmeti çağrıları ve özel işleyiciler gibi .aspx dosyaları için olmayan istekler için istek doğrulama çalıştırılır. İstek işleme işlem hattında özel HTTP modülleri çalıştırıldığında da istek doğrulama etkin olur. Bu değişikliğin sonucunda, .aspx dosyalar dışındaki kaynaklara yönelik istekler istek doğrulama hataları verebilir. İstek işlem hattında çalışan özel kod (örneğin, özel HTTP modülleri) istek doğrulama hataları da verebilir. |
Gerekirse, Web yapılandırma dosyasında aşağıdaki ayarı kullanarak yalnızca .aspx sayfaların istek doğrulamasını tetiklemesi eski davranışına geri dönebilirsiniz:<httpRuntime requestValidationMode="2.0" />Uyarı: Eski davranışa geri dönerseniz, mevcut işleyicilerdeki, modüllerdeki ve diğer özel kodlardaki tüm kodların XSS saldırı vektörleri olabilecek güvenli olmayabilecek HTTP girişleri için denetimler gerçekleştirdiğinden emin olun. |
| Yönlendirme | Visual Studio 2010'da bir dosya sistemi Web sitesi oluşturursanız ve Web sitesi klasör adında nokta (.) bulunan bir klasördeyse, URL yönlendirme güvenilir bir şekilde çalışmaz. Bazı sanal yollar üzerinden bir HTTP 404 hatası döndürülüyor. Bunun nedeni, Visual Studio 2010'un kök sanal dizin için yanlış bir yol kullanarak Visual Studio Geliştirme Sunucusu'nu başlatmasıdır. | * Dosya tabanlı Web sitesinin Özellikler sayfasında özniteliğini "/" olarak değiştirin Virtual Path .-veya- * Web sitesi projesi yerine bir Web uygulaması projesi oluşturun. Web uygulaması projelerinde bu sorun yoktur ve proje klasörünün adında bir nokta olsa bile URL yönlendirmesi çalışır. -veya- * IIS'de barındırılan HTTP tabanlı bir Web sitesi oluşturun. IIS tarafından barındırılan Web siteleri hem sanal yolda hem de proje dosyası klasöründe noktalar içerebilir. |
| SharePoint siteleri | adlı WSS_Minimalözel bir kısmi güven düzeyi içeren bir SharePoint Web sitesinin alt öğesi olarak dağıtılan ASP.NET 4 Web sitesini çalıştırmayı denerseniz aşağıdaki hatayı görürsünüz:Could not find permission set named 'ASP.Net'. |
Şu anda SharePoint'in hiçbir sürümü ASP.NET ile uyumlu değildir. Sonuç olarak, ASP.NET 4 Web sitesini SharePoint Web sitesinin alt öğesi olarak çalıştırmayı denememelisiniz. |
| XHTML 1.1 standartları | Yeni Web sitelerinde XHTML 1.1 uyumluluğunu etkinleştirmek için.NET Framework 4'teki ASP.NET denetimleri XHTML 1.1 uyumlu HTML oluşturur. Bu işleme, <system.Web> öğesinin içindeki Web.config dosyasında aşağıdaki seçenek kullanılarak etkinleştirilir.<pages controlRenderingCompatibilityVersion="4.0"/>Bu seçenek varsayılan olarak 4.0 olarak ayarlanır. Visual Studio 2008'den yükseltilen web projelerinde uyumluluk için 3.5 ayarı etkindir. |
Yok. |
Çekirdek
Genel özellikler
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| CardSpace | Windows CardSpace artık .NET Framework'e dahil değildir; ayrı olarak sağlanır. | Microsoft İndirme Merkezi'nden Windows CardSpace'i indirin. |
| Yapılandırma dosyaları | .NET Framework'ün uygulama yapılandırma dosyalarına nasıl eriştiğinde düzeltmeler yapılmıştır. | Uygulama yapılandırma dosyanız application-name.configolarak adlandırılıyorsa application-name.exe.configolarak yeniden adlandırın. Örneğin, MyApp.configMyApp.exe.configolarak yeniden adlandırın. |
| C# kod derleyicisi |
CompilerAd alanında CompilerError bulunan , ErrorLevelve Microsoft.CSharp sınıfları artık kullanılamaz ve derlemeleri (cscompmgd.dll) artık .NET Framework'e dahil değildir. |
CodeDomProvider sınıfını ve System.CodeDom.Compiler ad alanındaki diğer sınıfları kullanın. Daha fazla bilgi için bkz. CodeDOM kullanma. |
| Barındırma (yönetilmeyen API) | Barındırma özelliklerini geliştirmek için bazı barındırma etkinleştirme API'leri kullanım dışı bırakılmıştır. İşlem içi yan yana yürütme özellikleri, bir uygulamanın aynı işlemde .NET Framework'ün birden çok sürümünü yüklemesine ve başlatmasına olanak tanır. Örneğin, .NET Framework 2.0 SP1'i temel alan eklentileri (veya bileşenleri) yükleyen uygulamaları ve .NET Framework 4'e dayalı eklentileri aynı işlemde çalıştırabilirsiniz. Eski bileşenler eski .NET Framework sürümünü kullanmaya devam eder ve yeni bileşenler yeni .NET Framework sürümünü kullanır. | In-Process Yan Yana Yürütme'de açıklanan yapılandırmaları kullanın. |
| Yeni güvenlik modeli | Kod erişim güvenliği (CAS) ilkesi kapatılmış ve .NET Framework 4'teki Güvenlik Değişiklikleri'nde açıklandığı gibi basitleştirilmiş bir modelle değiştirilmiştir. | Uygulamalarınızda CAS'ye bağlıysanız değişiklikler gerekebilir. Daha fazla bilgi için bkz. Kod Erişimi Güvenlik İlkesi Uyumluluğu ve Geçişi. |
Tarih ve saat
Ad Alanı: System
Derleme: mscorlib (in mscorlib.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Gün ışığından yararlanma | Sistem saatiyle tutarlı olmak için zaman özellikleri (gibi Local ve Now) artık yaz saati uygulamaları için diğer .NET Framework verileri yerine işletim sistemi kurallarını kullanıyor. | Yok. |
| Dizeleri biçimlendirme | Kültüre duyarlı biçimlendirmeyi desteklemek için TimeSpan yapısı, yeni ToString ve Parse yöntemlerine ek olarak, TryParse, ParseExact ve TryParseExact yöntemlerinin yeni aşırı yüklemelerini içerir. |
Yok. |
Küreselleşme
Yeni nötr ve belirli kültürlerin listesi için bkz. Genelleştirme ve Yerelleştirmedeki Yenilikler.
Ad Alanı: System.Globalization
Derleme: mscorlib (in mscorlib.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Kültür adları | Aşağıdaki ad değişiklikleri Almanca, Divehi ve Afrika kültürlerini etkiler: * CurrencyEnglishName: Almanca (İsviçre) (de-CH) kültürünün para birimi adı "sFr." iken "Fr." olarak değiştirildi. * LongDatePattern: Divehi (Maldivler) (dv-MV) kültürünün uzun tarih deseni "dd/MMMM/yyyy" şeklinden "dd/MM/yyyy" şekline değiştirildi. * PMDesignator: Afrikaans (Güney Afrika) (af-ZA) kültürünün, P.M. belirleyicisi "nm"den "PM"e değiştirilmiştir. |
Kültür isim değişikliklerini not edin. |
| LCID parametresi | Otomasyon sunucusu ayarlarında beklenen davranışla tutarlı olmak için CLR artık parametresinin LCID geçerli kültürünü yönetilmeyen COM tabanlı uygulamalara geçiremez. Bunun yerine, kültür için 1033 (en-us) geçirir. |
Belirtilen bir kültür gerektiren yerel uygulamalar dışında hiçbir değişiklik gerekmez. |
| Eski kültür türleri |
CultureTypes ve CultureTypes kültür türleri artık kullanımdan kaldırıldı. Geriye dönük uyumluluk için, CultureTypes şimdi önceki .NET Framework'e dahil edilen nötr ve belirli kültürleri döndürür ve CultureTypes şimdi boş bir liste döndürür. |
Numaralandırmanın CultureTypes diğer değerlerini kullanın. |
| Kültür getiriliyor | .NET Framework 4, Windows 7'den başlayarak verilerin kendisini depolamak yerine işletim sisteminden kültür bilgilerini alır. Buna ek olarak, .NET Framework verileri sıralamak ve büyük/küçük harfe ayırmak için Windows ile eşitlenir. | Yok. |
| Unicode 5.1 standartları | .NET Framework artık yaklaşık 1400 karakterden oluşan tüm Unicode 5.1 karakterlerini destekliyor. Ek karakterler arasında yeni simgeler, oklar, aksan işaretleri, noktalama işaretleri, matematiksel simgeler, CJK vuruşları ve ideograflar, ek Malayalam ve Telugu sayısal karakterleri ve çeşitli Myanmar, Latin, Arapça, Yunanca, Moğolca ve Kiril karakterleri bulunur. Aşağıdaki yeni betikler Unicode 5.1 ile desteklenir: Sundanese, Lepcha, Ol Chiki, Vai, Saurashtra, Kayah Li, Rejang, Gurmukhi, Odia, Tamil, Telugu ve Malayalam karakterleri ve Cham. | Yok. |
Özel durumlar
Ad Alanları: System, System.Runtime.ExceptionServices
Derleme: mscorlib (in mscorlib.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Bozulmuş işlem durumu için istisnalar | CLR artık yönetilen koddaki özel durum işleyicilerine bozuk işlem durumu için özel durumlar sunmaz. | Bu özel durumlar, bir işlemin durumunun bozuk olduğunu gösterir. Uygulamanızı bu durumda çalıştırmanızı önermeyiz. Daha fazla bilgi için HandleProcessCorruptedStateExceptionsAttribute ve MSDN dergisindeki Bozuk Durum Özel Durumlarını İşleme bölümüne bakın. |
| Yürütme altyapısı özel durumları | ExecutionEngineException artık kullanımdan kaldırıldı çünkü yakalanabilir bir özel durum, kararsız bir işlemin çalışmaya devam etmesi için izin verir. Bu değişiklik çalışma zamanında öngörülebilirliği ve güvenilirliği artırır. | Koşula işaret etmek için bir InvalidOperationException kullanın. |
Yansıma
Ad Alanı: System.Reflection
Derleme: mscorlib (in mscorlib.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Bütünleştirme karma algoritmaları | Özellik artık HashAlgorithm döndürüyor, çünkü derleme yüklenmediğinde çalışma zamanı başvurulan derlemenin karma algoritmasını bilmiyor. (Bu, GetReferencedAssemblies yöntemi tarafından döndürülen bir derlemede başvurulan özelliğin kullanılmasını ifade eder.) | Yok. |
| Bütünleştirme yükleme | Derlemelerin yedekli yüklenmesini önlemek ve sanal adres alanından tasarruf etmek için CLR artık yalnızca Win32 MapViewOfFile işlevini kullanarak derlemeleri yükler. Artık LoadLibrary işlevini de çağırmaz.Bu değişiklik tanılama uygulamalarını aşağıdaki yollarla etkiler: * A ProcessModuleCollection artık bir Process.GetCurrentProcess().Modules çağrısından elde edilen bir sınıf kitaplığından (.dll dosyası) modül içermez.* İşlevi EnumProcessModules kullanan Win32 uygulamaları, listelenen tüm yönetilen modülleri görmez. |
Yok. |
| Tür Bildirimi | DeclaringType özelliği, türün tanımlayıcı bir türü olmadığında artık doğru bir şekilde null değerini döndürür. | Yok. |
| Temsilcileri | Temsilci oluşturucusuna null değeri geçirildiğinde, artık bir ArgumentNullException yerine bir NullReferenceException atar. | Özel durum işleme işlemlerinin öğesini yakaladığına ArgumentNullExceptionemin olun. |
| Genel bütünleştirilmiş kod önbelleği konum değişikliği | .NET Framework 4 derlemeleri için, genel derleme önbelleği Windows dizininden (%WINDIR%) Microsoft.Net alt dizinine (%WINDIR%\Microsoft.Net) taşındı. Daha önceki sürümlerden kalan derlemeler, eskiden kalma dizinde kalır. Yönetilmeyen ASM_CACHE_FLAGS numaralandırması yeni ASM_CACHE_ROOT_EX bayrağı içerir. Bu bayrak, GetCachePath işlevi tarafından alınabilen .NET Framework 4 derlemeleri için önbellek konumunu alır. |
Uygulamaların derlemeler için açık yollar kullanmadığını varsayarsak, bu tavsiye edilen bir uygulama değildir. |
| Genel bütünleştirilmiş kod önbellek aracı | Gacutil.exe (Genel Bütünleştirilmiş Kod Önbellek Aracı) artık kabuk eklentisi görüntüleyicisini desteklemez. | Yok. |
Birlikte çalışabilirlik
Ad Alanı: System.Runtime.InteropServices
Derleme: mscorlib (in mscorlib.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Arabellek uzunluğu (yönetilmeyen API) | Bellek tasarrufu sağlamak için, pBufferLengthOffset yönteminde parametresinin işlevselliği, pStringLengthOffset parametresiyle eşleşecek şekilde değiştirildi. Her iki parametre de artık dize uzunluğunun uzaklık konumuna işaret eder. Arabellek uzunluğu, string sınıfının gösteriminden kaldırıldı. |
Arabellek uzunluğu üzerindeki tüm bağımlılıkları kaldırın. |
| JIT hata ayıklama | Tam zamanında (JIT) hata ayıklama için kaydı basitleştirmek için .NET Framework hata ayıklayıcısı artık yerel kod için JIT hata ayıklama davranışını denetleyen yalnızca AeDebug kayıt defteri anahtarını kullanıyor. Bu değişiklik aşağıdakilere neden olur: * Yönetilen ve yerel kod için artık iki farklı hata ayıklayıcı kaydedemezsiniz. * Artık etkileşimli olmayan bir işlem için hata ayıklayıcıyı otomatik olarak başlatasınız, ancak kullanıcıdan etkileşimli bir işlem isteyebilirsiniz. * Artık hata ayıklayıcı başlatılamıyorsa veya başlatılması gereken kayıtlı bir hata ayıklayıcı olmadığında size bildirilmiyor. * Uygulamanın etkileşimini temel alan otomatik başlatma ilkeleri artık desteklenmiyor. |
Hata ayıklama işlemlerini gerektiği gibi ayarlayın. |
| Platform çağırma | Yönetilmeyen kodla birlikte çalışabilirlik performansını artırmak için, bir platformdaki yanlış çağırma kuralları artık uygulamanın başarısız olmasına neden oluyor. Önceki sürümlerde, sıralama katmanı yığındaki bu hataları çözdü. | Microsoft Visual Studio'da uygulamalarınızda hata ayıklamak, bu hataları düzeltebilmeniz için sizi uyarır. Güncellenemeyen ikili dosyalarınız varsa, uygulamanızın yapılandırma dosyasına <NetFx40_PInvokeStackResilience> öğesini ekleyerek çağırma hatalarının önceki sürümlerde olduğu gibi yığın boyunca çözülmesini sağlayabilirsiniz. Ancak bu durum uygulamanızın performansını etkileyebilir. |
| Arabirimler kaldırıldı (yönetilmeyen API) | Geliştirici karışıklığını önlemek için, aşağıdaki arabirimler yararlı çalışma zamanı senaryoları sağlamadığından ve CLR herhangi bir uygulama sağlamadığından veya kabul etmediğinden kaldırıldı: * INativeImageINativeImageDependency * INativeImageInstallInfo * INativeImageEvaluate * INativeImageConverter * ICorModule * IMetaDataConverter |
Yok. |
Veri
Bu bölümde veri kümeleri ve SQL istemcileri, Entity Framework, LINQ to SQL ve WCF Veri Sunucularını (eski adıyla ADO.NET Veri Hizmetleri) kullanmaya yönelik geçiş sorunları açıklanmaktadır.
DataSet ve SQL İstemcisi
Aşağıdaki tabloda, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeler açıklanmaktadır.
Ad Alanları: System.Data, System.Data.Objects.DataClasses, System.Data.SqlClient
Derlemeler: System.Data (System.Data.dll), System.Data.Entity (System.Data.Entity.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| POCO Senaryoları | IRelatedEnd Arabirimi, Düz Eski CLR Nesnesi (POCO) senaryolarında kullanılabilirliğini geliştirmek için yeni yöntemlere sahiptir. Bu yeni yöntemler parametre olarak bir Object yerine bir IEntityWithRelationships varlığı alır. |
| Satırları Düzenleme | IndexOf yöntemi, sınıfı tarafından DataView uygulandığı gibi artık -1 döndürmek yerine düzenlenen bir satırın değerini doğru bir şekilde döndürür. |
| Etkinlikler | Bir satır, değiştirilmiş durumdayken ve PropertyChanged yöntemi çağrıldığında, RejectChanges olayı artık tetikleniyor. Bu değişiklik, bir DataSet nesnenin içeriğini kullanıma sunan kullanıcı arabirimi denetimleri oluşturmayı kolaylaştırır. |
| İstisnalar | Prepare yöntemi artık bağlantı ayarlanmadığında veya açık olmadığında bir InvalidOperationException fırlatıyor,NullReferenceException yerine. |
| Haritalama Görünümleri | Sorgu görünümü eşleme hataları artık bir NullReferenceException oluşturmaktansa, çalışma anında yerine tasarım aşamasında yakalanıyor. Eşleme doğrulaması artık Kavramsal Şema'daki (CSDL) iki ilişkilendirme kümesinin aynı sütuna eşlendiği hatayı yakalar. |
| İşlemler | Bir uygulama, bir işlem tamamlandıktan (durduruldu veya geri alındı dahil) sonra bağlantıda bir deyimi yürütmeye çalışırsa, şimdi bir InvalidOperationException oluşturulur. Önceki sürümler bir özel durum oluşturmadı ve bir işlem durdurulmuş olsa bile ek komutları yürütmenize izin verdi. |
Entity Framework (varlık çerçevesi)
Aşağıdaki tabloda, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeler açıklanmaktadır.
Ad Alanları: System.Data, System.Data.Objects, System.Data.Objects.DataClasses
Derlemeler: System.Data.Entity (System.Data.Entity.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Varlık nesneleri | Detach yöntemi ile varlık nesnesinin durumu arasında, SaveChanges yöntemi çağrıldığında artık eşitlik vardır. Bu geliştirilmiş tutarlılık beklenmeyen özel durumların oluşmasını önler. |
| Varlık SQL'i | Entity SQL'de tanımlayıcı çözümlemeleri için kurallar geliştirilmiştir. Entity SQL ayrıştırıcısı, çok parçalı tanımlayıcıları çözümlemek için geliştirilmiş bir mantığa sahiptir. |
| Yapısal ek açıklamalar | Entity Framework artık yapısal ek açıklamaları tanır. |
| Arama Sorguları | Sorgularda aşağıdaki geliştirmeler yapıldı: * Boş GroupBy bir koleksiyon üzerinde null anahtar kullanan sorgu, sorguda ek seçim olup olmadığına bakılmaksızın hiçbir satır döndürmez.* LINQ ve Entity-SQL sorgularında oluşturulan SQL artık dize parametrelerini varsayılan olarak Unicode olmayan değerler olarak değerlendirmektedir. |
LINQ to SQL
Aşağıdaki tabloda, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeler açıklanmaktadır.
Ad Alanı: System.Data.Linq
Derleme: System.Data.Linq (System.Data.Linq.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Etkinlikler | Bir EntitySet<TEntity> koleksiyon, koleksiyon yüklendiğinde olduğu gibi ListChanged kaldırıldığında da ekleme ve kaldırma işlemleri için EntitySet<TEntity> olayını yükseltir. |
| Arama Sorguları |
Skip(0) artık LINQ to SQL sorgularında yoksayılır. Sonuç olarak, bu yönteme sahip sorgular farklı davranabilir. Örneğin, bazı durumlarda bir OrderBy yan tümce Skip(0) ile birlikte gereklidir ve eğer NotSupportedException yan tümcesi dahil edilmediyse, sorgu artık bir OrderBy özel durum fırlatır. |
WCF Veri Hizmetleri
Aşağıdaki tabloda, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeler açıklanmaktadır.
Ad Alanları: System.Data.Services, System.Data.Services.Client, System.Data.Services.Common, System.Data.Services.Providers
Derlemeler: System.Data.Services (System.Data.Services.dll), System.Data.Services.Client (System.Data.Services.Client.dlliçinde )
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Toplu İkili İçerik | WCF Veri Hizmetleri artık isteklerde ve yanıtlarda toplu ikili içeriği destekliyor. |
| Kesicileri Değiştir | Değişiklik önleyicileri artık silme isteği için çalıştırılır. Değişiklik engelleyici, varlık kümesindeki bir varlığı değiştirmek için sunucu tarafından her istek alındığında çalışan bir yöntemdir. Gelen istek yürütülmeden önce çalışır. Değişiklik yakalayıcı, değiştirilen nesneye ve üzerinde gerçekleştirilen işleme erişim sağlar. |
| İstisnalar | Aşağıdaki koşullar artık NullReferenceException yerine daha kullanışlı özel durumlar atar: * Bir TimeoutException veri hizmetine yapılan çağrı zaman aşımına uğradığında. * Bir DataServiceRequestException veri hizmetine hatalı istekte bulunulduğunda. Uygulamalarınızda, yeni özel durumları yakalamak için özel durum işlemeyi değiştirmeniz gerekir. |
| Üst Bilgileri | Başlıklarda aşağıdaki geliştirmeler yapıldı. * WCF Veri Hizmetleri artık belirtilmemiş bir değere sahip eTag başlığını doğru bir şekilde reddeder.* WCF Veri Hizmetleri artık istekte bir if-* üst bilgisi bulunduğunda bir bağlantıya yönelik silme isteğini yürütmez ve bir hata döndürür.* WCF Veri Hizmetleri artık istemciye Accept üst bilgisinde belirtilen biçimde (Atom, JSON) bir hata döndürür. |
| JSON Okuyucusu | JavaScript Nesne Gösterimi (JSON) okuyucusu, bir WCF Veri Hizmetine gönderilen JSON yüklerini işlerken tek ters eğik çizgi ("\") kaçış karakterini okuduğunda doğru şekilde hata döndürmektedir. |
| Birleştirmeler | Numaralandırmada MergeOption aşağıdaki geliştirmeler yapıldı: * Birleştirme MergeOption seçeneği artık bir veri hizmetinden sonraki yanıtlar sonucunda istemcideki varlığı değiştirmez. * Bu MergeOption seçenek artık dinamik SQL ile saklı yordam tabanlı güncelleştirmeler arasında tutarlıdır. |
| İstekler | Veri OnStartProcessingRequest hizmetlerine yönelik bir istek işlenmeden önce OnStartProcessingRequest yöntemi artık çağrılıyor. Bu, talebin ServiceOperation hizmetler ile doğru çalışmasını sağlar. |
| Akışlar | WCF Veri Hizmetleri artık okuma ve yazma işlemleri için altta yatan akışı kapatmaz. |
| Urı | WCF Veri Hizmetleri istemcisi tarafından URI'lerin kaçışı düzeltildi. |
Windows Communication Foundation (WCF)
Aşağıdaki tabloda, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeler açıklanmaktadır.
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Yapılandırma dosyaları | Yapılandırma dosyası hiyerarşisi aracılığıyla davranışların devralınmasını etkinleştirmek için WCF artık yapılandırma dosyaları arasında birleştirmeyi destekliyor. Yapılandırma devralma modeli, kullanıcıların bilgisayarda çalışan tüm hizmetlere uygulanacak davranışları tanımlamasına olanak sağlayacak şekilde genişletildi. Hiyerarşinin farklı düzeylerinde aynı ada sahip davranışlar varsa davranış değişiklikleriyle karşılaşabilirsiniz. |
| Hizmet barındırma |
<serviceHostingEnvironment> yapılandırma öğesini hizmet düzeyinde, allowDefinition="MachineToApplication" özniteliğini öğe tanımına ekleyerek artık belirtemezsiniz.Hizmet düzeyinde <serviceHostingEnvironment> öğesinin belirtilmesi teknik olarak yanlıştır ve tutarsız bir davranışa neden olur. |
Windows Presentation Foundation (WPF)
Uygulamalar
Ad Alanları: System.Windows, System.Windows.Controls
Derlemeler: PresentationFramework (PresentationFramework.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| İstisna yönetimi | Hataların daha önce algılanabilmesi için, WPF bir TargetInvocationException atar ve InnerException özelliğini, özgün özel durumu yakalamak yerine, NullReferenceException, OutOfMemoryException, StackOverflowException ve SecurityException gibi kritik özel durumlara ayarlar. | Yok. |
| Bağlı kaynaklar | Bağlamayı kolaylaştırmak için, projenin klasör yapısı dışında bir konumda bulunan kaynak dosyaları (resimler gibi), uygulama oluşturulduğunda kaynak kimliği olarak yalnızca dosya adı yerine kaynak dosyasının tam yolunu kullanır. Uygulama, çalışma zamanında dosyaları bulabilir. | Yok. |
| Kısmi güven uygulamaları | Güvenlik amacıyla, kısmi güvenle çalışan ve bir WebBrowser kontrol veya HTML barındıran bir Frame kontrol içeren Windows tabanlı uygulamalar, kontrol oluşturulduğunda bir SecurityException hatası verir. Tarayıcı uygulamaları bir özel durum oluşturur ve aşağıdaki koşulların tümü karşılanırsa bir ileti görüntüler: * Uygulama Firefox'ta çalışıyor. * Uygulama, güvenilir olmayan sitelerden İnternet bölgesinde kısmi güven içinde çalışıyor. * Uygulama, HTML içeren bir WebBrowser denetim veya bir Frame denetimi içerir. Güvenilen sitelerden veya intranet bölgesinden çalışan uygulamalar etkilenmez. |
Tarayıcı uygulamalarınızda aşağıdakilerden birini yaparak bu değişikliği kolaylaştırabilirsiniz: * Tarayıcı uygulamasını tam güven içinde çalıştırın. * Müşterilerin uygulamanın sitesini güvenilen siteler bölgesine eklemesini sağlayın. |
| Kaynak sözlükleri | Tema düzeyinde kaynak sözlüklerini geliştirmek ve bunların değişmesini önlemek için, kaynak sözlüğünde tanımlanan ve tema düzeyinde bir sözlükle birleştirilen dondurulabilir kaynaklar artık her zaman dondurulmuş olarak işaretlenir ve sabittir. Dondurulabilir kaynaklar için beklenen davranış budur. | Tema düzeyinde birleştirilmiş sözlükte tanımlanan bir kaynağı değiştiren uygulamaların kaynağı kopyalaması ve kopyalanan kopyayı değiştirmesi gerekir. Alternatif olarak, kaynak her sorgulandığında yeni bir kopya oluşturacak şekilde x:Shared="false" işaretlenebilir ResourceDictionary. |
| Windows 7 | WPF uygulamalarının Windows 7'de daha iyi çalışmasını sağlamak için bir pencerenin davranışını düzeltmek için aşağıdaki geliştirmeler yapıldı: * Takma ve hareket durumları artık kullanıcı etkileşimlerine göre beklendiği gibi çalışıyor. * Görev çubuğu komutları Pencereleri basamaklandır, Pencereleri yığılmış göster ve Pencereleri yan yana göster komutları artık doğru davranışa sahiptir ve uygun özellikleri güncelleştirir. * Maksimize edilmiş veya simge durumuna küçültülmüş bir pencerenin Top, Left, Width ve Height özellikleri artık monitöre bağlı olarak diğer değerler yerine pencerenin doğru geri yükleme konumunu içeriyor. |
Yok. |
| Windows stili ve saydamlığı | Eğer InvalidOperationExceptionWindowStyle ve WindowStyleAllowsTransparency ise, true öğesini WindowState dışında bir değere ayarlamaya çalışırsanız, bir WindowState fırlatılır. |
WindowStyle
AllowsTransparency olduğunda true öğesini değiştirmeniz gerekiyorsa, Win32 SetWindowLongPtr işlevini çağırabilirsiniz. |
| XPS Görüntüleyicisi | WPF, Microsoft XML Kağıt Belirtimi Temel Parçalar Paketi'ni (XPSEP) içermez. XPSEP, Windows 7 ve Windows Vista'ya dahildir. .NET Framework 3.5 SP1 yüklü olmayan Windows XP çalıştıran bir bilgisayarda, PrintDialog dışındaki bir WPF API'sini kullanarak yazdırma işlemi WINSPOOL'a dayanır. Bazı yazıcı özellikleri raporlanmaz ve yazdırma sırasında bazı yazıcı ayarları uygulanmaz. |
Gerekirse Microsoft XML Kağıt Belirtimi Temel Parçalar Paketi'ni yükleyin. |
Denetimler
Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Derlemeler: PresentationFramework (içinde PresentationFramework.dll), PresentationCore (içinde PresentationCore.dll), WindowsBase (içinde WindowsBase.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| İletişim kutuları | Güvenilirliği artırmak için, ShowDialog yöntemi, FileDialog denetimi oluşturan aynı iş parçacığında çağrılır. | FileDialog denetimi oluşturduğunuzdan ve ShowDialog yöntemini aynı iş parçacığında çağıracağınızdan emin olun. |
| Yüzen pencereler | Kayan pencereyi yanlış bir şekilde yeniden etkinleştirmeye devam eden (kalıcı bir iletişim kutusu gibi görünmesini sağlayan) odak geri yükleme mantığını düzeltmek için, aday pencerenin alt öğesi değilse odak geri yüklemesi engellenir. | Yok. |
| Koleksiyonlardaki öğeler | Bir öğe temel alınan bir koleksiyona taşındığında veya eklendiğinde, CollectionView sıralanmadıysa, CollectionView içinde aynı göreli konumda görünür. Bu, öğenin koleksiyondaki ve ilişkili CollectionViewiçindeki konumu arasında tutarlılık sağlar. | Bir öğenin sabit konumuna güvenmek yerine, ContainerFromItem içindeki bir öğenin konumunu bulmak için IndexOf veya CollectionView yöntemini kullanın. |
| Düzen | Gereksiz yeniden düzenlemeleri ortadan kaldırmak için, ShowsNavigationUI değişikliği artık düzeni geçersiz kılmaz veya yeni bir düzen geçişine neden olmaz. | Eğer ShowsNavigationUI değişikliğinin başka bir düzen geçişine neden olacağını düşünüyorsanız, özelliği ayarladıktan sonra InvalidateVisual'i çağırın. |
| Menüler | Menü açılır pencerelerinde ClearType metnini etkinleştirmek için ControlTemplate sınıfında, MenuItem denetiminde ve diğer denetimlerde değişiklikler yapıldı. | Uygulamalar denetim şablonlarının görsel yapısına güvenmemelidir. Yalnızca bir ControlTemplate öğesinin adlandırılmış bölümleri genel sözleşmenin bir parçasıdır. Bir uygulamanın içinde ControlTemplatebelirli bir nesne bulması gerekiyorsa, ağaçtaki bir nesnenin sabit konumuna güvenmek yerine görsel ağaçta belirli bir tür arayın. |
| Navigasyon |
Frame doğrudan bir konuma giderse, ilk gezintiden sonra IsNavigationInitiator özelliği true olur. Bu değişiklik, başlangıç senaryoları sırasında ek olayların tetiklenmesini engeller. |
Yok. |
| Açılır pencereler | Temsilci CustomPopupPlacementCallback artık düzen geçişi sırasında yalnızca bir kez değil birden çok kez çağrılabilir. | Temsilciniz CustomPopupPlacementCallback bir öğesinin Popup konumunu önceki konumuna göre hesaplarsa, yalnızca , popupSizeveya targetSize parametrelerinin offsetdeğerleri değiştiğinde konumu yeniden hesaplayın. |
| Özellik değerleri | SetCurrentValue yöntemi artık bir özelliği etkili bir değere ayarlamanıza olanak tanır, ancak özelliği etkileyen bağlama, stil veya tetikleyicilere saygı duymaya devam eder. | Denetim yazarları, özellik değeri bazı başka eylemler sonucunda, kullanıcı tarafından yapılan değişiklikler dahil, bir yan etki olarak değiştiğinde SetCurrentValue kullanmalıdır. |
| Metin kutuları | Güvenlik nedenleri nedeniyle, Copy ve Cut yöntemleri kısmi yetki altında çağrıldıklarında sessizce başarısız olur. Buna ek olarak, Copy veya Cut özelliğinin TextBoxBase devralan bir denetimde programlı yürütülmesi kısmi güven ortamında engellenir. Ancak, özelliği bu komutlardan birine bağlı olan Command bir düğmeye tıklama gibi kullanıcı tarafından başlatılan kopyalama ve kesme komutları çalışır. Standart kopyalama ve kesme klavye kısayolları ile bağlam menüsü, kısmi güven ortamında daha önce olduğu gibi çalışmaya devam edecek. |
Copy veya Cut komutunu bir düğmeye tıklama gibi kullanıcı tarafından başlatılan bir eyleme bağlayın. |
Grafik
Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Media.Effects
Derlemeler: PresentationFramework (içinde PresentationFramework.dll), PresentationCore (içinde PresentationCore.dll), WindowsBase (içinde WindowsBase.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Bit eşlem efektleri | Performansı geliştirmek için, BitmapEffect sınıfı ve sınıftan devralan BitmapEffect sınıflar (yine de mevcut olsa da) devre dışı bırakılır. Etki, aşağıdaki koşullar doğruysa donanım hızlandırmalı işleme işlem hattı kullanılarak işlenir: * Uygulama, 100 DIU'dan düşük bir radyus özelliği ayarlanmış olan bir DropShadowBitmapEffect veya BlurBitmapEffect kullanır. * Uygulamayı çalıştıran bilgisayardaki ekran kartı piksel gölgelendiricisi 2.0'ı destekler. Bu koşullar karşılanmazsa, nesnenin BitmapEffect hiçbir etkisi olmaz. Ayrıca, Visual Studio BitmapEffect nesnesi veya bir alt sınıfla karşılaştığında bir derleyici uyarısı oluşturur. PushEffect yöntemi eski olarak işaretlenir. |
Eski BitmapEffect ve türetilmiş sınıfları kullanmayı bırakın ve bunun yerine : Effect, BlurEffectve DropShadowEffect'den ShaderEffecttüretilen yeni sınıfları kullanın. Ayrıca sınıfından ShaderEffect devralarak kendi efektlerinizi oluşturabilirsiniz. |
| Bitmap çerçeveleri | Kopyalanan BitmapFrame nesneler artık DownloadProgress, DownloadCompleted ve DownloadFailed olaylarını alır. Bu, Web'den indirilen ve bir Image aracılığıyla Style kontrolüne uygulanan görüntülerin doğru şekilde çalışmasını sağlar. Davranışta yalnızca aşağıdaki deyimlerin tümü doğruysa bir değişiklik görürsünüz: * DownloadProgress, DownloadCompleted veya DownloadFailed olayına abonesiniz. * Kaynağı BitmapFrame Web'dendir. BitmapFrame indirme işlemi devam ederken klonlanır. |
Olay işleyicisinde göndericiye bakın ve sadece gönderici özgün BitmapFrame olduğunda işlem yapın. |
| Görüntülerin kodunu çözme | Görüntüler kod çözülmediğinde bir IOException'nin işlenmemesini önlemek için, BitmapSource sınıfı bir görüntünün kodunu çözmediğinde DecodeFailed olayını tetikler. | IOException için herhangi bir özel durum işlemeyi kaldırın ve kod çözme hatasını kontrol etmek için DecodeFailed olayını kullanın. |
Veri Girişi
Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Derlemeler: PresentationFramework (içinde PresentationFramework.dll), PresentationCore (içinde PresentationCore.dll), WindowsBase (içinde WindowsBase.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Komut örneklerini bağlama | Görünüm Modeli tabanlı komut örneklerini Görünüm tabanlı giriş hareketlerine bağlama mekanizması sağlamak için, InputBinding sınıfı artık Freezable sınıfı yerine DependencyObject sınıfından devralır. Aşağıdaki özellikler artık bağımlılık özellikleridir: * Command * CommandParameter * CommandTarget Bu değişiklik aşağıdakilere neden olur: * Nesne InputBinding artık sabit kalmak yerine kaydedildiğinde dondurulur. * Sınıfın kısıtlamaları InputBinding nedeniyle, örnek düzeyinde DependencyObject nesnelere birden çok iş parçacığından erişemezsiniz. Sınıfın Freezable kısıtlamaları nedeniyle kayıtlarından sonra sınıf düzeyinde giriş bağlamalarını değiştiremezsiniz. * View-Model'de oluşturulan komut örneklerinde giriş bağlamaları belirtemezsiniz. |
Bağlamalar değiştirilebilir olacaksa ayrı iş parçacıklarında bir InputBinding sınıfının ayrı örneklerini oluşturun, aksi takdirde onları dondurun. Kaydı yapıldıktan sonra sınıf düzeyindeki statik InputBinding’yi değiştirmeyin. |
| Tarayıcı uygulamaları | WPF Tarayıcı uygulamaları (.XBAP), nesnelerin yönlendirilmiş tuş olaylarını doğru sırada alabilmesi için artık tıpkı tek başına çalışan WPF uygulamaları gibi tuş olaylarını işler. | Yok. |
| Ölü tuş bileşimleri | WPF, görünür karakter üretmeyen ölü anahtarları gizler, ancak bunun yerine bir karakter oluşturmak için anahtarın bir sonraki harf anahtarıyla birleştirileceğine işaret eder. KeyDownEvent gibi anahtar girişi olayları, bir anahtarın ölü bir anahtar olduğunu, özellik Key değerine ayarlandığında rapor eder. Bu genellikle beklenen davranıştır çünkü uygulamalar genellikle birleşik karakter oluşturan klavye girişlerine yanıt vermeyi amaçlamamaktadır. | Birleştirilmiş karakterlerin parçası olan anahtarları okumayı bekleyen uygulamalar, DeadCharProcessedKey özelliğini kullanarak artık gizlenmiş anahtarı alabilir. |
| Odak yöneticisi | yöntemine FocusManager.GetFocusedElement(DependencyObject)IsFocusScope ekli özelliğinin ayarlandığı bir öğe geçirildiğinde, yöntem yalnızca döndürülen öğenin yöntemine truegeçirilen öğeyle aynı PresentationSource nesneye ait olması durumunda ve ise bu odak kapsamındaki klavye odaklı son öğe olan bir öğe döndürür. |
Yok. |
UI Otomasyonu
Ad Alanı: System.Windows, System.Windows.Automation.Peers, System.Windows.Automation.Provider, System.Windows.Controls, System.Windows.Data, System.Windows.Input
Derlemeler: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), UIAutomationProvider (UIAutomationProvider.dll), WindowsBase (WindowsBase.dlliçinde )
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| Görünümler sınıf hiyerarşisi | TreeViewAutomationPeer ve TreeViewItemAutomationPeer sınıfları ItemsControlAutomationPeer yerine FrameworkElementAutomationPeer öğesinden devralır. | Sınıflardan TreeViewItemAutomationPeer devralır ve GetChildrenCore yöntemini geçersiz kılarsanız, yeni TreeViewDataItemAutomationPeer sınıfından türeyen bir nesne döndürmeyi göz önünde bulundurun. |
| Konteynerler ekran dışında | Yanlış bir dönüş değerini düzeltmek için, IsOffscreenCore yöntemi artık görünümden kaydırılmış öğe kapları için false değerini doğru bir şekilde döndürüyor. Ayrıca, yönteminin değeri diğer pencerelerin tıkanmasından veya öğenin belirli bir monitörde görünür olup olmamasından etkilenmez. |
Yok. |
| Menüler ve alt nesneler | Nesne olmayan MenuItem alt öğeleri içeren menülerin UI otomasyonunu etkinleştirmek için, GetChildrenCore yöntemi artık AutomationPeer nesnesi yerine bir alt UIElement nesnesinin MenuItemAutomationPeer nesnesini döndürür. | Yok. |
| Yeni arabirimler ve derleme | UI otomasyonuna yönelik yeni özellikleri etkinleştirmek için aşağıdaki arabirimler eklendi: * IItemContainerProvider * ISynchronizedInputProvider * IVirtualizedItemProvider |
WPF otomasyon eşlerini oluşturan tüm projelerde UIAutomationProvider.dlliçin açık bir başvuru eklenmelidir. |
| Başparmak | GetClassNameCore yöntemi null yerine bir değer döndürür. Bu nedenle, GridSplitter sınıfından devralan Thumb denetimleri, Kullanıcı Arayüzü Otomasyonu'na bir ad bildirir. | Yok. |
| Sanallaştırılmış öğeler | Performansı artırmak için GetChildrenCore yöntemi, sanallaştırılmış olup olmadıklarına bakılmaksızın tüm alt nesneler yerine, yalnızca görsel ağaçta gerçekten bulunan alt nesneleri döndürür. | ItemContainerPattern öğesini kullanarak ItemsControlAutomationPeer içindeki tüm öğeler üzerinde yineleyin. |
XAML
Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup
Derlemeler: PresentationFramework (içinde PresentationFramework.dll), PresentationCore (içinde PresentationCore.dll), WindowsBase (içinde WindowsBase.dll)
| Özellik | 3.5 SP1 ile arasındaki farklar | Önerilen değişiklikler |
|---|---|---|
| İşaretleme uzantısı | WPF artık bir işaretleme uzantısı bir özelliği ayarlamak veya koleksiyonda bir öğe oluşturmak için kullanıldığında, belirli durumlarda ProvideValue nesnesini döndürmek yerine MarkupExtension yönteminin değerini doğru şekilde her zaman kullanıyor. Bazı durumlarda bir işaretleme uzantısı kendini döndürebilir. | Uygulamanız önceki sürümlerde MarkupExtension nesnesi döndüren bir kaynağa erişiyorsa, bu durumda ProvideValue nesnesi yerine MarkupExtension öğesinden döndürülen nesneye başvurmanız gerekir. |
| Öznitelikleri ayrıştırma | XAML'deki özniteliklerin artık yalnızca bir dönemi olabilir. Örneğin, aşağıdakiler geçerlidir:<Button Background="Red"/> (nokta yok)<Button Button.Background = "Red"/> (bir dönem)Aşağıdakiler artık geçerli değildir: <Button Control.Button.Background = "Red"/> (birden fazla nokta) |
Birden fazla dönemi olan XAML özniteliklerini düzeltin. |
XML
Bu tablodaki satırlar, daha önce sınırlamaları veya başka sorunları olan özelliklere yönelik iyileştirmeleri açıklar.
Şema ve dönüşümler
Ad Alanları: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Derlemeler: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dlliçinde )
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Bukalemun şemaları | Veri bozulmasını önlemek için, bukalemun şemaları artık birden çok şemaya dahil edildiğinde doğru şekilde kopyalanır. Bukalemun şemaları, hedef ad alanına sahip olmayan şemalardır ve başka bir XSD'ye dahil edildiğinde, içeri aktarılan şemanın hedef ad alanını alır. Bunlar genellikle bir şemaya ortak türler eklemek için kullanılır. |
| ID işlevleri | XSLT id işlevi artık bir XmlReader nesne XLST'ye geçirildiğinde null yerine doğru değeri döndürür. Eğer kullanıcı XmlReader yöntemini kullanarak LINQ to XML sınıfından bir CreateReader nesne oluşturduysa ve bu XmlReader nesne XSLT'ye geçirildiyse, XSLT'deki id işlevinin tüm örnekleri daha önce null döndürüyordu. Bu işlev için id izin verilen bir dönüş değeri değildir. |
| Ad alanı özniteliği | Veri bozulmasını önlemek için, bir XPathNavigator nesne artık özniteliğin x:xmlns yerel adını doğru şekilde döndürür. |
| Ad alanı bildirimleri | Bir XmlReader alt ağaçtaki nesne artık bir XML öğesi içinde yinelenen ad alanı bildirimleri oluşturmaz. |
| Şema doğrulama | Hatalı şema doğrulamasını XmlSchemaSet önlemek için sınıfı, XSD şemalarının doğru ve tutarlı bir şekilde derlenmesine izin verir. Bu şemalar diğer şemaları içerebilir; örneğin, A.xsd içerebilir B.xsd, içerebilir C.xsd. Bunlardan herhangi birinin derlenmesi, bu bağımlılık grafiğinin çapraz geçişine neden olur. |
| Betik işlevleri |
Function-available işlevi, işlev gerçekten kullanılabilir olduğunda artık yanlış bir sonuç döndürmüyorfalse. |
| Urı | Load yöntemi artık LINQ sorgularında doğru BaseURI'yi döndürür. |
Doğrulama
Ad Alanları: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Derlemeler: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dlliçinde )
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Ad alanı çözümleyicileri |
ReadContentAs yöntemi artık IXmlNamespaceResolver olarak geçirilen çözümleyiciyi yoksaymaz. Önceki sürümlerde, belirtilen ad alanı çözümleyicisi yoksayıldı ve XmlReader bunun yerine kullanıldı. |
| Beyaz boşluk | Okuyucu oluştururken veri kaybını önlemek için yöntemi Create artık önemli boşluk atmaz. XML doğrulaması, metnin XML işaretlemesiyle karıştırılabildiği karma içerik modunu tanır. Karma modda, tüm boşluklar önemlidir ve bildirilmelidir. |
Yazı
Ad Alanları: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath
Derlemeler: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dlliçinde )
| Özellik | 3.5 SP1 ile arasındaki farklar |
|---|---|
| Varlık referansları | Veri bozulmasını önlemek için, varlık başvuruları artık XML özniteliklerinde iki kez başlıklandırılmamıştır. Kullanıcı xmlns yöntemini kullanarak bir varlığın xml:lang, xml:space veya WriteEntityRef özniteliğine yazılması için işlem yaptıysa, varlık çıktıda iki kez entitize edilerek verilerin bozulmasına neden oldu. |
| Yeni satır işleme | Verilerin bozulmasını önlemek için nesneler XmlWriter seçeneğine dikkat eder NewLineHandling . |