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.
Windows Communication Foundation (WCF), kısmen güvenilen bir ortamda çalışırken sınırlı bir işlev alt kümesini destekler. Kısmi güvende desteklenen özellikler, Desteklenen Dağıtım Senaryoları konusunda açıklandığı gibi belirli bir senaryo kümesi etrafında tasarlanmıştır.
En Düşük İzin Gereksinimleri
WCF, aşağıdaki standart adlandırılmış izin kümelerinden biri altında çalışan uygulamalarda özelliklerin bir alt kümesini destekler:
Orta Güven izinleri
İnternet Bölgesi izinleri
Daha kısıtlayıcı izinlere sahip kısmen güvenilen uygulamalarda WCF'yi kullanmaya çalışmak çalışma zamanında güvenlik özel durumlarına neden olabilir.
Sözleşmeler
Kısmi güven altında çalıştırılırken sözleşmeler aşağıdaki kısıtlamalara tabidir:
Arabirimini uygulayan
[ServiceContract]hizmet sınıfının birpublicoluşturucuya sahip olmasıpublicgerekir. Yöntemleri tanımlıyorsa[OperationContract], bunlar olmalıdırpublic. Bunun yerine bir[ServiceContract]arabirim uygularsa, arabirimi olması koşuluylaprivate[ServiceContract]bu yöntem uygulamaları açık veyapublicolabilir.özniteliği kullanılırken
[ServiceKnownType], belirtilen yöntem olmalıdırpublic.[MessageContract]sınıflar ve üyeleri olabilirpublic.[MessageContract]Sınıf uygulama derlemesinde tanımlanmışsa olabilirinternalve üyeleri olabilirinternal.
Sistem Tarafından Sağlanan Bağlamalar
BasicHttpBinding veWebHttpBinding, kısmi bir güven ortamında tam olarak desteklenir. WSHttpBinding yalnızca Aktarım güvenlik modu için desteklenir.
, veya gibi NetTcpBindingNetNamedPipeBindingNetMsmqBindingHTTP dışındaki aktarımları kullanan bağlamalar, kısmi bir güven ortamında çalıştırılırken desteklenmez.
Özel Bağlamalar
Kısmi bir güven ortamında özel bağlamalar oluşturulabilir ve kullanılabilir, ancak bu bölümde belirtilen kısıtlamaları izlemesi gerekir.
Taşımalar
İzin verilen tek aktarım bağlama öğeleri ve'dir HttpTransportBindingElementHttpsTransportBindingElement.
Kodlayıcı
Aşağıdaki kodlayıcılara izin verilir:
Metin kodlayıcı (TextMessageEncodingBindingElement).
İkili kodlayıcı (BinaryMessageEncodingBindingElement).
Web İletisi kodlayıcısı (WebMessageEncodingBindingElement).
İleti İletim İyileştirme Mekanizması (MTOM) kodlayıcıları desteklenmez.
Güvenlik
Kısmen güvenilen uygulamalar, iletişimlerinin güvenliğini sağlamak için WCF'nin aktarım düzeyi güvenlik özelliklerini kullanabilir. İleti düzeyi güvenlik desteklenmez. İleti düzeyi güvenlik kullanmak için bağlamanın yapılandırılması, çalışma zamanında bir özel duruma neden olur.
Desteklenmeyen Bağlamalar
Güvenilir mesajlaşma, işlemler veya ileti düzeyi güvenlik kullanan bağlamalar desteklenmez.
Serileştirme
DataContractSerializer hem ve XmlSerializer hem de kısmi bir güven ortamında desteklenir. Ancak, kullanımı DataContractSerializer aşağıdaki koşullara tabidir:
Tüm serileştirilebilir
[DataContract]türler olmalıdırpublic.Bir
[DataMember]türdeki tüm serileştirilebilir[DataContract]alanlar veya özellikler genel ve okuma/yazma olmalıdır. Kısmen güvenilen bir uygulamada WCF çalıştırılırken alanların seri hale getirilmesi ve seri durumdanreadonlyçıkarılması desteklenmez.[Serializable]/ISerializable programlama modeli kısmi güven ortamında desteklenmez.Bilinen türler kod veya makine düzeyi yapılandırmasında (machine.config) belirtilmelidir. Bilinen türler, güvenlik nedeniyle uygulama düzeyi yapılandırmasında belirtilemez.
Uygulayan IObjectReference türler, kısmen güvenilen bir ortamda özel durum oluşturur.
Kısmen güvenilen bir uygulamada güvenli bir şekilde kullanılırken güvenlik hakkında daha fazla bilgi için Kısmi Güven en iyi yöntemleriDataContractSerializerbakın.
Koleksiyon Türleri
Bazı koleksiyon türleri hem hem IEnumerable<T>de IEnumerable uygular. Örnek olarak uygulayan ICollection<T>türler verilebilir. Bu tür türler uygulamasını publicGetEnumerator()ve açık bir uygulamasını GetEnumerator()uygulayabilir. Bu durumda, DataContractSerializer açık uygulamasını publicGetEnumerator()değil uygulamasını çağırırGetEnumerator(). Uygulamaların GetEnumerator() hiçbiri public açık değilse ve tümü açık uygulamalarsa çağrısı DataContractSerializer yapınIEnumerable.GetEnumerator().
WCF kısmi bir güven ortamında çalışırken koleksiyon türleri için, uygulamaların GetEnumerator()hiçbiri public veya hiçbiri açık arabirim uygulamaları değilse, bir güvenlik özel durumu oluşturulur.
NetDataContractSerializer
, List<T>ArrayListve Dictionary<TKey,TValue> gibi Hashtablebirçok .NET Framework koleksiyon türü kısmi güven tarafından desteklenmezNetDataContractSerializer. Bu türler öznitelik kümesine [Serializable] sahiptir ve serileştirme bölümünde daha önce belirtildiği gibi, bu öznitelik kısmi güvende desteklenmez. Koleksiyonları DataContractSerializer özel bir şekilde ele alır ve bu nedenle bu kısıtlamayı aşabiliyor, ancak bu kısıtlamayı NetDataContractSerializer aşmak için böyle bir mekanizmaya sahip değil.
Türü DateTimeOffset , kısmi güven içinde tarafından NetDataContractSerializer desteklenmez.
Kısmi güven içinde çalıştırılırken vekil ile NetDataContractSerializer birlikte kullanılamaz (mekanizmayı SurrogateSelector kullanarak). Bu kısıtlamanın seri hale getirmek için değil vekil kullanmak için geçerli olduğunu unutmayın.
Ortak Davranışların Çalıştırılmasını Etkinleştirme
Yapılandırma dosyasının AllowPartiallyTrustedCallersAttribute commonBehaviors< bölümüne eklenen> özniteliği (APTCA) ile işaretlenmemiş hizmet veya uç nokta davranışları, uygulama kısmi bir güven ortamında çalıştırıldığında çalıştırılmaz ve bu durumda hiçbir özel durum oluşmaz. Yaygın davranışların çalıştırılmasını zorunlu kılmak için aşağıdaki seçeneklerden birini yapmalısınız:
Kısmi bir güven uygulaması olarak dağıtıldığında çalışabilmesi için ortak davranışınızı özniteliğiyle AllowPartiallyTrustedCallersAttribute işaretleyin. APTCA işaretli derlemelerin çalışmasını önlemek için bilgisayarda bir kayıt defteri girdisi ayarlanabileceğini unutmayın. .
Uygulama tam olarak güvenilen bir uygulama olarak dağıtılırsa, kullanıcıların uygulamayı kısmi bir güven ortamında çalıştırmak için kod erişimi güvenlik ayarlarını değiştiremeyeceğinden emin olun. Bunu yapabilirlerse, davranış çalışmaz ve hiçbir özel durum oluşturulur. Bunu sağlamak için Caspol.exe (Kod Erişimi Güvenlik İlkesi Aracı) kullanarak levelfinal seçeneğine bakın.
Yaygın bir davranış örneği için bkz . Nasıl yapılır: Kuruluşta Uç Noktaları Kilitleme.
Yapılandırma
Bir özel durumla, kısmen güvenilen kod yalnızca yerel app.config dosyadaki WCF yapılandırma bölümlerini yükleyebilir. machine.config veya kök web.config dosyasında WCF bölümlerine başvuran WCF yapılandırma bölümlerini yüklemek için ConfigurationPermission (Sınırsız) gerekir. Bu izin olmadan, yerel yapılandırma dosyasının dışındaki WCF yapılandırma bölümlerine (davranışlar, bağlamalar) başvurular, yapılandırma yüklendiğinde bir özel durumla sonuçlanır.
Bu konunun Seri hale getirme bölümünde açıklandığı gibi serileştirme için bilinen tür yapılandırma bir özel durumdur.
Önemli
Yapılandırma uzantıları yalnızca Tam Güven altında çalışırken desteklenir.
Tanılama
Etkinlikleri Günlüğe Kaydetme
Sınırlı olay günlüğü kısmi güven altında desteklenir. Olay Günlüğüne yalnızca hizmet etkinleştirme hataları ve izleme/ileti günlüğü hataları kaydedilir. Olay Günlüğüne aşırı ileti yazılmasını önlemek için bir işlem tarafından günlüğe kaydedilebilecek olay sayısı üst sınırı 5'tir.
İleti Günlüğe Kaydetme
WCF kısmi bir güven ortamında çalıştırıldığında ileti günlüğü çalışmaz. Kısmi güven altında etkinleştirilirse, hizmet etkinleştirmesi başarısız olmaz, ancak hiçbir ileti günlüğe kaydedilmez.
İzleme
Kısmi bir güven ortamında çalışırken kısıtlı izleme işlevi kullanılabilir.
<listeners> Yapılandırma dosyasındaki öğesinde, ekleyebileceğiniz tek türler ve yeni TextWriterTraceListenertürleridirEventSchemaTraceListener. Standart XmlWriterTraceListener kullanımı eksik veya yanlış günlüklere neden olabilir.
Desteklenen izleme kaynakları şunlardır:
System.IdentityModel.Claims, , System.IdentityModel.Policy, System.IdentityModel.Selectors ve System.IdentityModel.Tokens.
Aşağıdaki izleme kaynakları desteklenmez:
Numaralandırmanın TraceOptions aşağıdaki üyeleri belirtilmemelidir:
Kısmi güven ortamında izlemeyi kullanırken, uygulamanın izleme dinleyicisinin çıkışını depolamak için yeterli izinlere sahip olduğundan emin olun. Örneğin, izleme çıktısını TextWriterTraceListener bir metin dosyasına yazmak için kullanırken, uygulamanın izleme dosyasına başarıyla yazmak için gereken FileIOPermission'a sahip olduğundan emin olun.
Not
İzleme dosyalarının yinelenen hatalarla dolup taşmasını önlemek için WCF, ilk güvenlik hatasından sonra kaynağın veya eylemin izlemeyi devre dışı bırakır. Başarısız olan her kaynak erişimi için bir özel durum izlemesi vardır; kaynağa ilk kez erişme veya eylemi gerçekleştirme girişiminde bulunulma.
WCF Hizmet Konağı
WCF hizmet konağı kısmi güveni desteklemez. Kısmi güven içinde bir WCF hizmeti kullanmak istiyorsanız, hizmetinizi oluşturmak için Visual Studio'daki WCF Hizmet Kitaplığı Proje şablonunu kullanmayın. Bunun yerine, hizmeti WCF kısmi güveninin desteklendiği bir Web sunucusunda barındırabilen WCF hizmeti Web sitesi şablonunu seçerek Visual Studio'da yeni bir Web sitesi oluşturun.
Diğer Sınırlamalar
WCF genellikle barındırma uygulaması tarafından uygulanan güvenlik konularıyla sınırlıdır. Örneğin, WCF bir XAML Tarayıcı Uygulamasında (XBAP) barındırılıyorsa, Windows Presentation Foundation Kısmi Güven Güvenliği'nde açıklandığı gibi XBAP sınırlamalarına tabidir.
Kısmi güven ortamında indigo2 çalıştırılırken aşağıdaki ek özellikler etkinleştirilmez:
Windows Yönetim Araçları (WMI)
Olay günlüğü yalnızca kısmen etkindir (Tanılama bölümündeki tartışmaya bakın).
Performans sayaçları
Kısmi güven ortamında desteklenmeyen WCF özelliklerinin kullanılması çalışma zamanında özel durumlara neden olabilir.
Listelenmemiş Özellikler
Kısmi bir güven ortamında çalıştırılırken bir bilgi veya eylemin kullanılamadığını keşfetmenin en iyi yolu kaynağa erişmeyi denemek veya eylemi bir try bloğun içinde yapmak ve ardından catch başarısız olmaktır. İzleme dosyalarının yinelenen hatalarla dolup taşmasını önlemek için WCF, ilk güvenlik hatasından sonra kaynağın veya eylemin izlemeyi devre dışı bırakır. Başarısız olan her kaynak erişimi için bir özel durum izlemesi vardır; kaynağa ilk kez erişme veya eylemi gerçekleştirme girişiminde bulunulma.