.NET Framework 4 geçiş sorunları

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ızdaki programlamalarda herhangi bir değişiklik 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 içinde)

Ö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 i Telefon 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 (sayfanın Request.Browse özelliği tarafından kullanıma sunulur) tarayıcı tanım dosyaları tarafından yönlendirilir. 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 4 Hataya Neden Olan Değişiklikler ASP.NET belgedeki "ASP.NET 4 Alt Uygulama ASP.NET 2.0 veya ASP.NET 3.5 Uygulamalarında 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'ın önceki sürümlerinde varsayılan davranış ayarıyla AutoIDclientIDModeeş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 trust yeni legacyCasModel özniteliği kullanarak kısmi güven ASP.NET 4 uygulaması ASP.NET 1.1 ve 2.0 davranışı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ı), ASP.NET 3.5'teki uygulama Web.config dosyalarında bulunan ortak yapılandırma bilgilerinin çoğunu 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 birleşimleri ve belirli birleşimlerle ilgili sorunları çözme hakkında bilgi için, ASP.NET Web sitesindeki 4 Hataya Neden Olan Değişiklikler ASP.NET belgedeki "Yeni ASP.NET 4 Kök Yapılandırmasıyla İlgili Yapılandırma Hataları" bölümüne bakın.
İşlemeyi denetleme ASP.NET'ın önceki sürümlerinde, bazı denetimler devre dışı bırakamadığınız işaretlemeler yaymıştı. 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.
* Denetim HtmlForm bir name özniteliği işlemez.
* Denetim Table artık bir border="0" özniteliği işlemez.

Kullanıcı girişi (örneğin, denetim) için tasarlanmamış denetimler, Label özellikleri olarak ayarlanmışsa Enabledfalse (veya bu ayarı kapsayıcı denetiminden devralıyorsa) özniteliğini işlemezdisabled="disabled".
Uygulamanızı ASP.NET 2.0 veya ASP.NET 3.5'ten yükseltmek için Visual Studio kullanırsanı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'ın önceki sürümlerinde, bir isteğin http://contoso.com Default.aspx isteğine neden olması gerekir. Bu belgede, açma form etiketi aşağıdaki örnekte olduğu gibi işlenir:

<form action="Default.aspx" />

ASP.NET 4'te, bir isteğin http://contoso.com de Default.aspx isteğiyle sonuçlandığı halde ASP.NET html açma 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:

* Öğenin action özniteliği "" olarak ayarlanmış bir .aspx sayfası tarayıcıya form gönderilir.
* Form ASP.NET geri gönderiliyor.
* Yönetilen BIR HTTP modülü, varlık gövdesinin veya Request.Paramsgibi Request.Form 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önderilebilecek varlık gövdesi yoktur.
* 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 sorunlara geçici çözüm yolları hakkında bilgi için, ASP.NET Web sitesindeki 4 Hataya Neden Olan Değişiklikler ASP.NET belgenin "IIS 7 veya IIS 7.5 Tümleşik Modunda Varsayılan Belgede Olay İşleyicileri Tetiklenmeyebilir" konusuna bakın.
Karma 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, tanımlama bilgileri ve görüntüleme durumu üzerindeki karma işlemleri için algoritmayı HMACSHA256 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'leri 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 HttpUtility ve UrlEncodeHttpServerUtility yöntemleri, tek tırnak işareti karakterini (') aşağıdaki gibi kodlayarak güncelleştirildi:

* yöntemi tek HtmlEncode tırnak işaretinin örneklerini şu şekilde kodlar: &#39;
* yöntemi tek UrlEncode tırnak işaretinin örneklerini şu şekilde kodlar: %27
ve UrlEncode yöntemlerini kullandığınız HtmlEncode 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 Web sitesindeki 4 Hataya Neden Olan Değişiklikler ASP.NET belgedeki "ASP.NET 2.0 Uygulamaları eurl.axd'ye Başvuran HttpException Hataları Oluşturabilir" bölümüne bakın.
Üyelik türleri ASP.NET üyelikte kullanılan bazı türler (örneğin, MembershipProvider) System.Web.dll 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, System.Web.ApplicationServices.dll için sınıf kitaplığı projesine bir başvuru ekleyin.
Menü denetimi değişiklikleri Denetimde yapılan Menu değişiklikler aşağıdaki davranışla sonuçlanır:

* olarak ayarlandıysa MenuRenderingModeListveya olarak ve ControlRenderingCompatibilityVersionDefault veya daha sonra olarak ayarlandıysa MenuRenderingMode4.0, özelliğin PopOutImageUrl hiçbir etkisi yoktur.
* ve DynamicPopOutImageUrl özelliklerinde StaticPopOutImageUrl ayarlanan yol ters eğik çizgi (\) içeriyorsa, görüntüler işlenmez. (ASP.NET önceki sürümlerinde yol ters eğik çizgi içerebilir.)
* Tek tek menü öğeleri için özelliğini ayarlamak PopOutImageUrl yerine, veya DynamicPopOutImageUrl üst Menu denetimini ayarlayınStaticPopOutImageUrl.

-veya-

olarak Tableayarlayın MenuRenderingMode veya olarak ayarlayın MenuRenderingModeDefault ve olarak 3.5ayarlayınControlRenderingCompatibilityVersion. Bu ayarlar, denetimin Menu önceki ASP.NET sürümlerinde kullandığı HTML tablo tabanlı düzeni kullanmasına neden olur.
* or DynamicPopOutImageUrl özelliğindeki StaticPopOutImageUrl yol ters eğik çizgi (\) içeriyorsa, eğik çizgi karakterini (/) kullanın.
Web.config dosyasında mobil derleme ASP.NET'in önceki sürümlerinde, altındaki system.web/compilationbölümündeki kök Web.config dosyasına System.Web.Mobile.dll derlemesine assemblies 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 dahil edilir, ancak kullanım dışıdır.
Bu derlemedeki türleri kullanmak istiyorsanız, derlemeye kök Web.config dosyasında veya bir uygulama Web.config dosyasında başvuru ekleyin.
Çıktı önbelleğe alma ASP.NET 1.0'da bir hata, yanıtta http üst bilgisi yaymak Vary:* için output€"cache ayarı olarak belirtilen Location="ServerAndClient" önbelleğe alınmış sayfalara 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 bilgiyi engellemek Vary:* için çağrılabilen 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" %>

Sonuç olarak, üst bilginin gizlenmesi SetOmitVaryStarVary:* için yöntemi artık 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 yayması Vary:*gerekiyorsa, aşağıdaki örnekte gösterildiği gibi yöntemini çağırın AppendHeader :

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, içindeki System.Web.Security Passport ile ilgili türler artık özniteliğiyle ObsoleteAttribute 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 , AppRelativeCurrentExecutionFilePathve CurrentExecutionFilePathgibi FilePathözelliklerden döndürülen değerlere değer eklemezPathInfo. Bunun yerine, PathInfo bilgiler içinde PathInfokullanılabilir. Örneğin, aşağıdaki URL parçasını düşünün:

/testapp/Action.mvc/SomeAction

ASP.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 için, istek ASP.NET doğrulama, istek yaşam döngüsünün başlarında çağrı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 yollardan BIR HTTP 404 hatası döndürülür. 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 Sanal Yol özniteliğini "/" olarak değiştirin.

-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, öğesinin içindeki <system.Web> 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.

Temel

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ın adı application-name.config ise, dosyayı application-name.exe.config olarak yeniden adlandırın. Örneğin, MyApp.config öğesini MyApp.exe.config olarak yeniden adlandırın.
C# kod derleyicisi CompilerAd alanında Microsoft.CSharp bulunan , CompilerErrorve ErrorLevel sınıfları artık kullanılamaz ve derlemeleri (cscompmgd.dll) artık .NET Framework'e dahil değildir. sınıfını CodeDomProvider ve ad alanında System.CodeDom.Compiler 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. İşlem İçi Yan Yana Yürütme bölümünde 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 (mscorlib.dll)

Özellik 3.5 SP1 ile arasındaki farklar Önerilen değişiklikler
Gün ışığından yararlanma Sistem saatiyle tutarlı olmak için saat özellikleri (ve gibi LocalNow) artık yaz saati işlemleri 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 TimeSpan desteklemek için yapı, yeni ve TryParseExact yöntemlerine ToStringek olarak , Parseve TryParse yöntemlerinin yeni ParseExact aşırı yüklemelerini içerir. Yok.

Globalleştirme

Yeni nötr ve belirli kültürlerin listesi için bkz . Genelleştirme ve Yerelleştirmedeki Yenilikler.

Ad Alanı: System.Globalization

Derleme: mscorlib (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: Alman (İsviçre) (ch) kültürünün para birimi adı "sFr." olan "Fr." olarak değiştirildi.
* LongDatePattern: Divehi (Maldivler) (dv-MV) kültürü için uzun tarih deseni "dd/MMMM/yyyy" olan "dd/AA/y" olarak değiştirildi.
* PMDesignator: Afrikaan (Güney Afrika) (af-ZA) kültürünün P.M. belirleyicisi "nm" yerine "PM" olarak değiştirildi.
Not kültürü adı değişiklikleri.
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 alınıyor .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 (mscorlib.dll)

Özellik 3.5 SP1 ile arasındaki farklar Önerilen değişiklikler
Bozuk işlem durumu için özel durumlar 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 MSDN dergisindeki HandleProcessCorruptedStateExceptionsAttribute 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 (mscorlib.dll)

Özellik 3.5 SP1 ile arasındaki farklar Önerilen değişiklikler
Derleme karma algoritmaları Derleme HashAlgorithm yüklenmediğinde çalışma zamanı başvuruda bulunılan derlemenin karma algoritmasını bilmediğinden özelliği artık döndürür AssemblyHashAlgorithm. (Bu, yöntemi tarafından döndürülen gibi başvuruda bulunılan bir derlemede GetReferencedAssemblies özelliğini kullanmayı ifade eder.) Yok.
Derleme 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 işlevini çağırmaz LoadLibrary .

Bu değişiklik tanılama uygulamalarını aşağıdaki yollarla etkiler:

* A ProcessModuleCollection artık çağrısından elde edilen Process.GetCurrentProcess().Modulesbir 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 bildiriyor Türün DeclaringType bildirim türü olmadığında özelliği artık null değerini doğru bir şekilde döndürür. Yok.
Temsilciler Temsilci artık, temsilcinin oluşturucusunun ArgumentNullExceptionNullReferenceException null değeri geçirildiğinde yerine bir 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ı. Önceki sürümlerdeki derlemeler eski 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.
Hiçbiri, uygulamaların derlemeler için açık yollar kullanmadığını varsayarsak, bu önerilen 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 (mscorlib.dll)

Özellik 3.5 SP1 ile arasındaki farklar Önerilen değişiklikler
Arabellek uzunluğu (yönetilmeyen API) Belleği kaydetmek içinpBufferLengthOffset, ICorProfilerInfo2::GetStringLayout yönteminin parametresinin işlevselliği parametresiyle pStringLengthOffset 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 dize 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üncelleştirilemeyen ikili dosyalarınız varsa, çağırma hatalarının <önceki sürümlerde olduğu gibi yığının çözülmesini sağlamak için uygulamanızın yapılandırma dosyasına NetFx40_PInvokeStackResilience> öğesini ekleyebilirsiniz. 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 içinde)

Özellik 3.5 SP1 ile arasındaki farklar
POCO Senaryoları Arabirimin IRelatedEnd Düz Eski CLR Nesnesi (POCO) senaryolarında kullanılabilirliğini geliştirmek için yeni yöntemleri vardır. Bu yeni yöntemler parametre olarak varlık yerine bir IEntityWithRelationships alırObject.
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 Artık PropertyChanged bir satır değiştirilmiş durumdayken ve RejectChanges yöntemi çağrıldığında olay tetikleniyor. Bu değişiklik, bir DataSet nesnenin içeriğini kullanıma sunan kullanıcı arabirimi denetimleri oluşturmayı kolaylaştırır.
Özel durumlar Yöntemi Prepare artık bağlantı ayarlanmadığında veya açılmadığında yerine bir NullReferenceExceptionoluştururInvalidOperationException.
Eşleme Görünümleri Sorgu görünümü eşleme hataları artık çalışma zamanında oluşturmak NullReferenceException yerine tasarım zamanı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

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 içinde)

Özellik 3.5 SP1 ile arasındaki farklar
Varlık nesneleri Yöntem çağrıldığında SaveChanges artık yöntemi ile varlık nesnesinin durumu arasında Detach eşlik 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.
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 artık ListChanged toplama yüklendiğinde olayı tetiklemenin yanı sıra kaldırıldığında ekleme ve kaldırma işlemleri EntitySet<TEntity> için olayı yükseltir.
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 ile Skip(0)bir OrderBy yan tümce gerekir ve yan tümcesi dahil edilmediyse OrderBy sorgu artık bir NotSupportedException özel durum oluşturur.

WCF Data Services

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.dll iç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.
Kesme kesicilerini değiştirme Değişiklik kesme kesenleri artık silme isteği için yürütülür.

Değişiklik kesme noktası, 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 kesme noktası, değiştirilen varlığa ve üzerinde gerçekleştirilen işleme erişim sağlar.
Özel durumlar Aşağıdaki koşullar artık yerine NullReferenceExceptiondaha kullanışlı özel durumlar oluşturur:

* Bir TimeoutException veri hizmetine yapılan çağrı zaman aşımına uğradıkları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 bilgiler Üst bilgilerde aşağıdaki geliştirmeler yapıldı:

* WCF Veri Hizmetleri artık belirtilmemiş değeri olan bir eTag üst bilgiyi doğru bir şekilde reddeder.
* WCF Veri Hizmetleri artık bir hata döndürür ve bir üst bilgi istekte olduğunda if-* bir bağlantı için silme isteği yürütmez.
* 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 artık doğru bir hata döndürüyor.
Birleştirme 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 yöntemi çağrılır. Bu, isteğin hizmetler için ServiceOperation düzgün çalışmasını sağlar.
Akışlar WCF Veri Hizmetleri artık okuma ve yazma işlemleri için temel alınan akışı kapatmaz.
Urı URI'lerin WCF Veri Hizmetleri istemcisi tarafından 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 Artık özniteliğini allowDefinition="MachineToApplication" öğe tanımına <serviceHostingEnvironment> ekleyerek hizmet düzeyinde yapılandırma öğesini belirtemezsiniz.

Öğesinin hizmet düzeyinde belirtilmesi <serviceHostingEnvironment> teknik olarak yanlıştır ve tutarsız 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
Özel durumları işleme Hataların daha önce algılanması için WPF bir oluşturur TargetInvocationException ve özelliğini özgün özel durumu yakalamak yerine , OutOfMemoryException, StackOverflowExceptionve SecurityExceptiongibi NullReferenceExceptionkritik özel durumlara ayarlarInnerException. 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üvenlikle ilgili dikkat edilmesi gerekenler için, kısmi güven içinde çalışan ve bir WebBrowser denetim veya HTML içeren bir Frame denetim içeren Windows tabanlı uygulamalar, denetim oluşturulduğunda bir SecurityException oluşturur.

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 WebBrowserFrame denetim veya denetim 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 ResourceDictionary şekilde işaretlenebilirx:Shared="false".
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.
* Ekranı Topkaplamış veya simge durumuna küçültülmüş bir pencerenin , Left, Widthve 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ığı InvalidOperationException ve dışında bir değere WindowStateWindowStateWindowStyletrueAllowsTransparency ayarlamaya WindowStyle çalışırsanız bir oluşturulur. olduğunda AllowsTransparencytrueöğesini WindowStyle 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, içindekiler PrintDialog dışında bir WPF API'si kullanarak yazdırmak WINSPOOL'u kullanı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 (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll içinde)

Ö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 denetimi oluşturan aynı iş parçacığında çağrılır FileDialog . Bir FileDialog denetim oluşturduğunuzdan ve yöntemini aynı iş parçacığında çağıracağınızdan ShowDialog emin olun.
Kayan 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 CollectionView veya eklendiğinde, öğesi sıralanmamışsa CollectionView aynı göreli konumda görünür. Bu, öğenin koleksiyondaki ve ilişkili CollectionViewiçindeki konumu arasında tutarlılık sağlar. ContainerFromItem Bir öğenin sabit konumuna güvenmek yerine içindeki bir öğenin CollectionView konumunu bulmak için veya IndexOf yöntemini kullanın.
Düzenler Gereksiz yeniden düzenleri ortadan kaldırmak için, artık düzenin değiştirilmesi ShowsNavigationUI düzeni geçersiz kılmaz veya başka bir düzen geçişine neden olur. Değişikliğin ShowsNavigationUI başka bir düzen geçişine neden olmasını bekliyorsanız, özelliğini ayarladıktan sonra çağırın InvalidateVisual .
Menüler Menü açılır pencerelerinde ClearType metnini etkinleştirmek için ControlTemplate , sınıfında ve denetimde MenuItem 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.
Gezinme doğrudan Frame bir konuma giderse, IsNavigationInitiator özellik ilk gezintiden sonradır true . Bu değişiklik, başlangıç senaryoları sırasında ek olayların tetiklenmesini engeller. Yok.
Açılan 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 , targetSizeveya offset parametrelerinin popupSizedeğ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 her değiştiğinde kullanıcı işleme dahil olmak üzere başka bir eylemin yan etkisi olarak kullanmalıdır SetCurrentValue .
Metin kutuları Güvenlikle ilgili dikkat edilmesi gerekenler Copy için ve Cut yöntemleri kısmi güven içinde çağrıldıklarında sessizce başarısız olur.

Buna ek olarak, veya Cut özelliğinin Copy devralan TextBoxBase bir denetimde program aracılığıyla yürütülmesi kısmi güven içinde 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 klavye kısayollarını kesme ve bağlam menüsü kısmi güvende daha önce olduğu gibi çalışmaya devam eder.
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 (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll içinde)

Ö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, radius özelliği 100 DIU'dan az ayarlanmış bir veya BlurBitmapEffect kullanırDropShadowBitmapEffect.
* 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 nesne veya alt sınıfla karşılaştığında BitmapEffect 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 : BlurEffect, DropShadowEffectve ShaderEffect'den Effecttüretilen yeni sınıfları kullanın.

Ayrıca sınıfından ShaderEffect devralarak kendi efektlerinizi oluşturabilirsiniz.
Bit eşlem çerçeveleri Kopyalanan BitmapFrame nesneler artık , DownloadCompletedve DownloadFailed olaylarını DownloadProgressalır. Bu, Web'den indirilen ve bir Style aracılığıyla denetime uygulanan görüntülerin Image düzgün ç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:

* , DownloadCompletedveya DownloadFailed olayına DownloadProgressabonesiniz.
* Kaynağı BitmapFrame Web'dendir.
BitmapFrame* İndirme işlemi devam ederken kopyalanır.
Olay işleyicisinde göndereni denetleyin ve yalnızca gönderen özgün BitmapFrameise işlem yapın.
Görüntülerin kodunu çözme Görüntülerin kodunu çözemediğinde bir IOException öğesinin işlenmemesini önlemek için sınıfı, BitmapSource bir görüntünün kodunu çözmediğinde olayı tetikler DecodeFailed . için IOExceptiontüm özel durum işlemelerini kaldırın ve kodu çözme hatasını DecodeFailed denetlemek için olayını kullanın.

Giriş

Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input

Derlemeler: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll içinde)

Ö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 yerine DependencyObjectöğesinden Freezable 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ı DependencyObject nedeniyle birden çok iş parçacığından örnek düzeyinde InputBinding nesnelere erişemezsiniz.
* Sınıfın kısıtlamaları nedeniyle kayıtlarından sonra sınıf düzeyi giriş bağlamalarının Freezable sesini kapatamazsınız.
* 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 ayrı örneklerini oluşturun veya başka türlü dondurun. Sınıf düzeyi statik InputBinding kaydı yapıldıktan sonra sessize alma.
Tarayıcı uygulamaları WPF Tarayıcı uygulamaları (. XBAP) artık nesnelerin yönlendirilmiş anahtar olaylarını doğru sırada alması için tek başına WPF uygulamaları gibi anahtar olayları işleyin. 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. Olay gibi KeyDownEvent anahtar giriş olayları, özelliği değerine ayarlayarak bir anahtarın Key kullanımdan çıktığı zamanları Key bildirir. 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, özelliğini kullanarak DeadCharProcessedKey şimdi karartılmış 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.dll iç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ı yerine FrameworkElementAutomationPeeröğesinden ItemsControlAutomationPeer devralır. Sınıflardan TreeViewItemAutomationPeer devralır ve yöntemini geçersiz kılarsanız GetChildrenCore , yeni TreeViewDataItemAutomationPeer sınıftan devralan bir nesne döndürmeyi göz önünde bulundurun.
Kapsayıcılar ekran dışında Yanlış bir dönüş değerini düzeltmek için yöntemi IsOffscreenCore artık görüntüden kaydırılan öğe kapsayıcıları için doğru şekilde döndürür false . 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 dışındaki MenuItem alt öğeleri içeren menülerin UI otomasyonunu GetChildrenCore etkinleştirmek için yöntemi artık nesne yerine MenuItemAutomationPeer bir alt UIElement nesnenin nesnesini döndürürAutomationPeer. 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şleri oluşturan tüm projelerde UIAutomationProvider.dll açık bir başvuru eklenmelidir.
Başparmak GetClassNameCore yöntemi null yerine bir değer döndürür. Bu nedenle, sınıfından Thumb devralan gibi GridSplitter denetimler UI Otomasyonu bir ad bildirir. Yok.
Sanallaştırılmış öğeler Performansı geliştirmek için yöntemi, GetChildrenCore sanallaştırılıp sanallaştırılmadıklarına bakılmaksızın tüm alt nesneler yerine yalnızca görsel ağaçta bulunan alt nesneleri döndürür. Öğesinin tüm öğeleri ItemsControlAutomationPeerüzerinde yinelemek için kullanınItemContainerPattern.

XAML

Ad Alanları: System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Input, System.Windows.Markup

Derlemeler: PresentationFramework (PresentationFramework.dll), PresentationCore (PresentationCore.dll), WindowsBase (WindowsBase.dll içinde)

Özellik 3.5 SP1 ile arasındaki farklar Önerilen değişiklikler
İşaretlemeyi genişletme WPF artık bir özelliği ayarlamak veya koleksiyonda ProvideValue bir öğe oluşturmak için bir işaretleme uzantısı kullanıldığında belirli durumlarda nesnesini döndürmek MarkupExtension yerine her zaman yöntemindeki değeri kullanır. Bazı durumlarda bir işaretleme uzantısı kendini döndürebilir. Uygulamanız önceki sürümlerde nesne döndüren bir MarkupExtension kaynağa erişiyorsa, nesnesi yerine öğesinden ProvideValuedöndürülen nesneye MarkupExtension başvurun.
Ö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

Bütünleştirilmiş Kodlar: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll iç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.
KIMLIK 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.

Kullanıcı yöntemini kullanarak CreateReader bir LINQ to XML sınıfından bir XmlReader nesne oluşturduysa ve bu XmlReader nesne bir XSLT'ye geçirildiyse, XSLT'deki işlevin id tüm örnekleri daha önce null döndürdü. 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ğrulaması 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 İşlev kullanılabilir işlevi artık işlev gerçekten kullanılabilir olduğunda yanlış döndürülüyor false .
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

Bütünleştirilmiş Kodlar: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll içinde)

Özellik 3.5 SP1 ile arasındaki farklar
Ad alanı çözümleyicileri ReadContentAs yöntemi artık ona geçirilen çözümleyiciyi IXmlNamespaceResolver yoksaymaz.

Önceki sürümlerde, belirtilen ad alanı çözümleyicisi yoksayıldı ve XmlReader bunun yerine kullanıldı.
Boşluk Okuyucu oluştururken veri kaybını önlemek için yöntemi Create artık önemli boşluk atmaz.

XML doğrulaması mixed-con çadır modu tanır; burada metin XML işaretlemesiyle birlikte karıştırılabilir. Karma modda, tüm boşluklar önemlidir ve bildirilmelidir.

Yazılanlar

Ad Alanları: System.Xml.Linq; System.Xml.Schema, System.Xml.XPath

Bütünleştirilmiş Kodlar: System.Xml (System.Xml.dll), System.Xml.Linq (System.Xml.Linq.dll içinde)

Özellik 3.5 SP1 ile arasındaki farklar
Varlık başvuruları 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ı yöntemini kullanarak WriteEntityRef bir varlığa veya bir xmlnsxml:lang veya xml:space özniteliğine bir varlık yazmaya çalıştıysa, varlık çıktıda iki kez adlandırıldı ve bu nedenle veriler bozuldu.
Yeni satır işleme Verilerin bozulmasını önlemek için nesneler XmlWriter seçeneğine dikkat eder NewLineHandling .

Ayrıca bkz.