GİRİŞ
Windows Communication Foundation (WCF) güvenli iletiler göndermek ve sonra güvenli olmayan yanıtları almak için veya güvenli ileti göndermek ve güvenli yanıtları almak için işlevi yok. Bu makalede açıklanan düzeltme, yeni bir enableUnsecuredResponse özniteliği ekler. EnableUnsecuredResponse özniteliğinin varsayılan değeri False'tur. Bu özniteliğin değeri trueolarak ayarlarsanız, aşağıdaki yeni özellikleri içinde WCF etkinleştirilir:
-
Giden iletilere ileti metnini imzalamak için Güvenli Yuva Katmanı (SSL) protokolünü kullanarak güvenli olsa bile WCF istemcilerinin güvenli olmayan yanıtları kabul edebilirsiniz.
-
WCF hizmetleri isteği güvenli olsa bile, hiçbir güvenlik üstbilgisi olan SOAP zarflarını güvenli olmayan yanıtlar gönderebilirsiniz.
Not: EnableUnsecuredResponse özniteliği, yalnızca yalnızca CustomBinding türü için geçerlidir.
Çözüm
.NET Framework 3.0 kullanıyorsanız, aşağıdaki Microsoft Bilgi alarak makalesinde açıklanan düzeltmeyi yükleyin:
967105 düzeltme: yanıtlar sağlayan güvenli iletileri göndermek ve almak WCF düzeltme güvenli ve güvenli olmayan iletileri göndermek ve güvenli yanıtları almak için .NET Framework 3.0 için kullanılabilirWindows 7 veya Windows Server 2008 R2 üzerinde .NET Framework 3.5 Service Pack 1 kullanıyorsanız, aşağıdaki Microsoft Bilgi alarak makalesinde açıklanan düzeltmeyi yükleyin:
977420 Windows Communication Foundation, .NET Framework 3.5 SP1 için Windows 7 ve Windows Server 2008 R2'de sorunları düzeltmek düzeltme toplaması kullanılabilir
Diğer işletim sistemlerinde .NET Framework 3.5 Service Pack 1 kullanıyorsanız, bu sorunu gidermek için aşağıdaki düzeltmeyi yükleyin.
Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilemiyorsa, bu düzeltmeyi içeren bir sonraki hizmet paketini beklemenizi öneririz.
Bu sorunu hemen düzeltmek için düzeltmeyi edinmek üzere Microsoft Müşteri Destek Hizmetleri'ne başvurun. Microsoft Müşteri Destek Hizmetleri telefon numaralarının ve destek ücretleriyle ilgili bilgi tam listesi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://support.microsoft.com/contactus/?ws=supportNot: Özel durumlarda, Microsoft Destek Uzmanı özel bir güncelleştirmenin sorununuzu çözeceğini belirlerse, destek aramaları için normalde uygulanan ücretler iptal edilebilir. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.
Önkoşullar
Bu düzeltmeyi uygulamak için .NET Framework 3.5 Service Pack 1 olmalıdır.
Yeniden başlatma gereksinimi
.NET Framework'ün örneği yok kullanılıyorsa, bu düzeltmeyi uyguladıktan sonra bilgisayarı yeniden başlatmanız gerekmez.
Düzeltme değiştirme bilgileri
Bu düzeltme eki, başka düzeltmelerin yerini almaz.
Dosya bilgileri
Bu düzeltmenin İngilizce sürümü, aşağıdaki tabloda listelenen dosya özniteliklerine (veya daha yeni dosya özniteliklerine) sahiptir. Bu dosyaların tarihleri ve saatleri Koordinatlı Evrensel Saat'te (UTC) listelenmiştir. Dosya bilgilerini görüntülediğinizde koordinatlı evrensel saat yerel saate dönüştürülür. UTC ve yerel saat arasındaki farkı bulmak için Denetim Masası'ndaki Tarih ve Saat öğesinde Saat Dilimi sekmesini kullanın.
Windows Server 2003'ün ve Windows XP'nin tüm x86 tabanlı sürümler için dosya bilgileri
Dosya adı |
Dosya sürümü |
Dosya boyutu |
Tarih |
Saat |
Platform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
17,240 |
01-Haz-2009 |
22:56 |
x86 |
System.runtime.serialization.dll |
3.0.4506.4119 |
970,752 |
01-Haz-2009 |
22:56 |
x86 |
System.servicemodel.dll |
3.0.4506.4119 |
5,931,008 |
01-Haz-2009 |
22:56 |
x86 |
Windows Server 2003'ün ve Windows XP'nin tüm x64 tabanlı sürümler için dosya bilgileri
Dosya adı |
Dosya sürümü |
Dosya boyutu |
Tarih |
Saat |
Platform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4119 |
19,304 |
01-Haz-2009 |
22:28 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4119 |
847,872 |
01-Haz-2009 |
22:28 |
x64 |
System.servicemodel.dll |
3.0.4506.4119 |
5,267,456 |
01-Haz-2009 |
22:28 |
x64 |
Windows Vista SP2 ve Windows Server 2008 SP2'in tüm x86 tabanlı sürümler için dosya bilgileri
Dosya adı |
Dosya sürümü |
Dosya boyutu |
Tarih |
Saat |
---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
17,240 |
10-Jun-2009 |
06:55 |
System.runtime.serialization.dll |
3.0.4506.4120 |
970,752 |
10-Jun-2009 |
06:55 |
System.servicemodel.dll |
3.0.4506.4120 |
5,935,104 |
10-Jun-2009 |
06:55 |
Windows Vista SP2 ve Windows Server 2008 SP2'in tüm x64 tabanlı sürümler için dosya bilgileri
Dosya adı |
Dosya sürümü |
Dosya boyutu |
Tarih |
Saat |
Platform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
19,288 |
10-Jun-2009 |
06:56 |
x64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
x64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
x64 |
Tüm Windows Server 2008 SP2'in Itanium tabanlı sürümleri için dosya bilgileri
Dosya adı |
Dosya sürümü |
Dosya boyutu |
Tarih |
Saat |
Platform |
---|---|---|---|---|---|
Servicemonikersupport.dll |
3.0.4506.4120 |
33,640 |
10-Jun-2009 |
06:56 |
IA-64 |
System.runtime.serialization.dll |
3.0.4506.4120 |
847,872 |
10-Jun-2009 |
06:56 |
IA-64 |
System.servicemodel.dll |
3.0.4506.4120 |
5,271,552 |
10-Jun-2009 |
06:56 |
IA-64 |
Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Daha fazla bilgi
Aşağıdaki kod örneği, enableUnsecuredResponse özniteliği sınamak için kullanın:
Hizmet
BindingElementCollection serviceBec = new BindingElementCollection();SecurityBindingElement serviceSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
serviceSbe.EnableUnsecuredResponse = true;
serviceBec.Add(serviceSbe);
serviceBec.Add(new TextMessageEncodingBindingElement());
serviceBec.Add(new HttpTransportBindingElement());
Binding serviceBinding = new CustomBinding(serviceBec);
ServiceHost serviceHost = new ServiceHost(typeof(RequestReply));
…
serviceHost.Open();
İstemci
BindingElementCollection clientBec = new BindingElementCollection();SecurityBindingElement clientSbe = SecurityBindingElement.CreateUserNameForCertificateBindingElement();
clientSbe.EnableUnsecuredResponse = true;
clientBec.Add(clientSbe);
clientBec.Add(new TextMessageEncodingBindingElement());
clientBec.Add(new HttpTransportBindingElement());
Binding clientBinding = new CustomBinding(clientBec);
IRequestReply channel = cf.CreateChannel();
try
{
channel.SendString("Hello");
cf.Close();
}