2013-05-18 41 views
6

Tôi đang phải đối mặt với lỗi này:Tên từ xa không thể được giải quyết - WebClient

The remote name could not be resolved: 'russgates85-001-site1.smarterasp.net'

Khi tôi yêu cầu nội dung html để đọc sử dụng web client nó mang lại cho tôi lỗi. Dưới đây là mã của tôi.

string strHTML = string.Empty; 
WebClient myClient = new WebClient(); 
UTF8Encoding utf8 = new UTF8Encoding(); 
byte[] requestHTML; 
string pdfFileName = "outputpdf_" + DateTime.Now.Ticks + ".pdf"; 
string webUrl = Request.Url.Scheme + "://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port : ""); 

requestHTML = myClient.DownloadData("http://russgates85-001-site1.smarterasp.net/adminsec/images/printinvoice.aspx?iid=2"); 

// OR 

requestHTML = myClient.DownloadData(webUrl + "?iid=3"); 

Khi tôi đặt cùng một URL trên mã cục bộ/môi trường, nó hoạt động tốt.

+0

là Webserver của bạn, nơi bạn chạy mã ASP.NET của bạn cũng địa phương của bạn máy dev hoặc một số hộp khác? –

+0

FYI bạn cũng có thể nhận được điều này nếu bạn đang thực hiện yêu cầu cho một trang web không có chứng chỉ hợp lệ nếu nó đang chạy dưới https. (tức là Chứng chỉ phát triển IIS Express). Nhấn vào trình duyệt của bạn và chấp nhận quảng cáo xen kẽ sẽ cho phép tải. – benmccallum

+0

Như [Ken Johnson đã nói] (https://stackoverflow.com/questions/16626348/the-remote-name-could-not-be-resolved-webclient/24293932#24293932) bạn cần sử dụng IP máy chủ thay vì tên máy chủ. – Lvcios

Trả lời

6

Rất có thể vị trí khác bạn chạy mã thực sự không có quyền truy cập vào vị trí từ xa đó. I E. trong nhiều máy chủ môi trường công ty không được phép truy cập Internet bên ngoài. Bạn có thể muốn cố gắng ping/traceroute russgates85-001-site1.smarterasp.nettừ rằng máy chủ khác và nếu không có quyền truy cập - cấu hình router/tường lửa (mở port vv) hoặc sử dụng proxy

+0

Ok, Nhưng trang web đã được lưu trữ trên URL ở trên, nơi tất cả các trang đều hoạt động. Chỉ tìm nạp nội dung bằng url ở trên không hoạt động bằng ứng dụng web. –

+0

Điều đó khác. Máy trạm của khách hàng đang truy cập Internet để đến được URL trên. Và trong mã của bạn, chính máy chủ cũng đang cố gắng làm như vậy. Nhiều chính sách không cho phép điều đó, đặc biệt là thông qua URL bên ngoài. Bạn có thể cần phải thử tên máy chủ địa phương thay vì hoặc thậm chí đơn giản 'localhost' - điều này có thể làm việc kể từ khi yêu cầu là địa phương cho máy chủ chính nó –

+0

Ok, vì vậy cho máy chủ/sống .. những gì tôi nên làm gì để làm cho nó chạy? hiện tại nó mang lại cho tôi lỗi tôi đã đề cập. –

5

Tôi chạy vào điều này và cần thiết để sử dụng IP của máy chủ từ xa thay vì tên DNS. Sản xuất đã cố gắng truy cập vào máy chủ từ xa bằng tên DNS của nó, điều này không thể thực hiện được ở phía bên kia tường lửa.

1

tôi đã cùng một vấn đề và đã nhận nó giải quyết bằng cách thiết lập proxy cho WebClient

một cách rõ ràng như

webClient.Proxy = new WebProxy("myproxy.com:portnumber"); 
byte[] bytearr= webClient.DownloadData(acsMetadataEndpointUrlWithRealm); 
Các vấn đề liên quan