2010-05-06 1 views
8

Каков наилучший способ установить expect100continue при использовании WebClient (C# .NET). У меня есть этот код ниже, я все еще вижу 100 в заголовке. Глупый апач по-прежнему жалуется на ошибку 505.webclient и 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); 

Примечания: Если я ставлю выше в консольном приложении и дайте ему поработать - то я не вижу заголовки в стельке. Но мой код встроен в пользовательскую библиотеку, загруженную приложением WPF. Итак, есть ли еще Expect100Continue с точки зрения потока, инициализации и т. Д. Теперь я думаю, что это больше проблема моего кода.

ответ

7

Вам необходимо установить Expect100Continue свойства на ServicePoint используется для URI вы обращающиеся:

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

Попробуйте создать WebClient instanse после того, как вы измените Expect100Continue на false. Или использовать Webrequest вместо WebClient

1

Единственный способ сделать это, чтобы создать переопределение.

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; 
     } 
    } 

Это работает идеально.

+0

Это должен быть принятый ответ. Только этот подход позволяет настроить режим Expect100Continue для каждого запроса –

Смежные вопросы