30

Tôi đang cố gắng sử dụng WebClient/HttpWebRequest để tải xuống một số dữ liệu từ máy chủ. Tôi sử dụng mã sau để làm như vậy:Máy chủ đã vi phạm giao thức. Section = ResponseHeader Chi tiết = CR phải được theo sau bởi LF, Trong WinForms?

WebClient client = new WebClient(); 
client.Credentials = new NetworkCredential("admin", "password"); 
Stream datastream = client.OpenRead("http://routerlogin.com/cgi-bin/CF_logs.html"); 
StreamReader reader = new StreamReader(datastream); 

Máy chủ là trang của tôi đang ở trong cấu hình của bộ định tuyến. Nó hoạt động tốt từ trình duyệt, nhưng khi tải xuống sử dụng mã của tôi, nó sẽ gửi một số WebException với thông báo

Máy chủ vi phạm giao thức. Phần = ResponseHeader Chi tiết = CR phải được theo sau bởi LF, Trong WinForms ?.

Tôi đã tìm thấy một giải pháp người ta sẽ sử dụng nếu họ đang sử dụng ASP.net, thêm dòng sau vào web.config:

<configuration> 
    <system.net> 
     <settings> 
      <httpWebRequest useUnsafeHeaderParsing="true" /> 
     </settings> 
    </system.net> 
</configuration> 

Tuy nhiên, tôi đang làm cho một ứng dụng WinForms vì vậy đây sẽ không làm việc cho tôi. Có những lựa chọn thay thế nào để khắc phục vấn đề này?

+0

điều này sẽ hoạt động đối với tất cả các loại ứng dụng, không chỉ asp.net – shriek

+0

tôi nên thêm nó ở đâu? Không có web hoặc app.config. – msbg

+0

Điều kỳ lạ tôi đang gặp phải là lỗi đó xuất hiện trên một máy tính với mạng của chúng tôi nhưng các máy tính khác có cùng ứng dụng hoạt động tốt. Khi tôi thêm ở trên đề cập đến rằng pc cũng bắt đầu làm việc tốt. Câu hỏi là tại sao vấn đề đó chỉ là trên một máy tính duy nhất (có cài đặt mới) –

Trả lời

15

Đầu tiên, thêm một file app.config chỉ là dễ dàng như thêm bất kỳ tập tin khác, How to: Add Application Configuration Files to C# Projects

Sau đó, bạn chỉ cần thêm đoạn mã trên để mà app.config mới.

Một cách khác để đặt thuộc tính đó qua mã, tránh nhu cầu ứng dụng.config được hiển thị here hoặc here.

Các vấn đề liên quan