2010-05-06 21 views
8

WebClient (C# .NET) kullanırken expect100continue değerini belirlemenin en iyi yolu nedir? Aşağıda bu kod var, hala başlıkta 100 devam görüyorum. Aptal apache hala 505 hatasıyla şikayet ediyor.webclient ve expect100continue

 string url = "http://aaaa.com"; 
     ServicePointManager.Expect100Continue = false; 

     WebClient service = new WebClient();   
     service.Credentials = new NetworkCredential("username", "password"); 
     service.Headers.Add("Content-Type","text/xml"); 

     service.UploadStringCompleted += (sender, e) => CompleteCallback(BuildResponse(e)); 
     service.UploadStringAsync(new Uri(url), "POST", query); 

Not: Bir konsol uygulamasında yukarıda koymak ve çalışmaya bırakın ise - o zaman fiddler içinde başlıklarını görmüyorum. Ancak, kodum bir WPF uygulaması tarafından yüklenen bir kullanıcı kitaplığına yerleştirilmiştir. Yani, iş parçacığı, başlatma, vb. Açısından Expect100Continue daha var. Şimdi, benim kod sorunum daha fazla olduğunu düşünüyorum.

cevap

7

yerine Webrequest kullanın:

var uri = new Uri("http://foo.bar.baz"); 
var servicePoint = ServicePointManager.FindServicePoint(uri); 
servicePoint.Expect100Continue = false; 
1

Expect100Continue öğesini false olarak değiştirdikten sonra WebClient instanse oluşturmaya çalışın. Veya URI Erişmekte olduğunuz için kullanılan ServicePoint üzerinde Expect100Continue özelliğini ayarlamanız gerekir bir WebClient

1

Bunu yapmanın tek yolu bir geçersiz kılma oluşturmaktır.

public class ExpectContinueAware : System.Net.WebClient 
    { 
     protected override System.Net.WebRequest GetWebRequest(Uri address) 
     { 
      System.Net.WebRequest request = base.GetWebRequest(address); 
      if (request is System.Net.HttpWebRequest) 
      { 
       var hwr = request as System.Net.HttpWebRequest; 
       hwr.ServicePoint.Expect100Continue = false; 
      } 
      return request; 
     } 
    } 

Bu, mükemmel çalışır.

+0

Bu kabul edilen cevap olmalıdır. Sadece bu yaklaşım, istek başına Expect100Continue ayarını sağlar. –

İlgili konular