2013-07-17 23 views
15

Tôi đang sử dụng mã sau đang hoạt động trên máy cục bộ, nhưng khi tôi thử cùng một mã trên máy chủ"Nỗ lực kết nối không thành công vì bên được kết nối không phản hồi đúng sau một khoảng thời gian" bằng cách sử dụng WebClient

một nỗ lực kết nối thất bại vì các bên kết nối không đúng cách phản ứng sau một khoảng thời gian, hoặc thành lập kết nối thất bại vì kết nối máy chủ đã thất bại trong việc đáp ứng

đây là mã của tôi:

WebClient client = new WebClient(); 
// Add a user agent header in case the 
// requested URI contains a query. 
//client.Headers.Add ("ID", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID); 
StreamReader reader = new StreamReader(data); 
string s = reader.ReadToEnd(); 
Console.WriteLine(s); 
data.Close(); 
reader.Close(); 

Tôi nhận được lỗi trên

Stream data = client.OpenRead("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID); 

là nó do bất kỳ thiết lập tường lửa?

+0

thử duyệt url trong trình duyệt – Ehsan

+0

@EhsanUllah yes i đã thực hiện bước này và URL được tạo ra đang làm việc tốt khi tôi sao chép và dán nó sang tab khác (Trình duyệt Tab) –

Trả lời

13

Tôi đã có một vấn đề tương tự và đã phải chuyển đổi URL từ chuỗi đối tượng Uri sử dụng:

Uri myUri = new Uri(URLInStringFormat, UriKind.Absolute); 

(URLInStringFormat là URL của bạn) Hãy thử kết nối bằng cách sử dụng Uri thay vì chuỗi là:

WebClient client = new WebClient(); 
client.OpenRead(myUri); 
2

URL mà mã này có thể truy cập được trong trình duyệt không?

http://" + Request.ServerVariables["HTTP_HOST"] + Request.ApplicationPath + "/PageDetails.aspx?ModuleID=" + ID 

Điều đầu tiên bạn cần xác minh là URL bạn đang tạo là chính xác. Sau đó kiểm tra trong trình duyệt để xem liệu trình duyệt có đang duyệt hay không. sau đó sử dụng công cụ Fiddler để kiểm tra những gì đang truyền qua mạng. Có thể là URL đang được gọi thông qua mã bị thoát sai.

Sau đó kiểm tra các sự cố liên quan đến tường lửa.

+0

vâng tôi đã kiểm tra và tạo URL hợp lệ và tôi đã thử điều này –

+0

Bạn đã xác minh rằng URL đang được chuyển là chính xác bằng cách sử dụng Fiddler? – Ehsan

+0

trạng thái cuộc gọi mà trình duyệt hiển thị khi bạn thực hiện thông qua mã của mình là gì? – Ehsan

1
  1. Khả năng đầu tiên: Chuỗi mã hóa trong File Web.config liên quan nên được giống như đã nhập trong chuỗi kết nối (được trình bày ở trên) Và cũng có thể, khi bạn thay đổi bất cứ điều gì trong "Registry Editor "hoặc regedit.exe (như được viết tại Run), sau đó sau bất kỳ thay đổi nào, hãy đóng trình chỉnh sửa đăng ký và đặt lại Dịch vụ thông tin Internet của bạn bằng cách nhập IISRESET khi Chạy. Và sau đó đăng nhập vào môi trường của bạn.

  2. gõ services.msc vào chạy và kiểm tra:

    1. Tình hình dịch vụ Nhà nước ASP.NET được bắt đầu. Nếu không, sau đó nhấp chuột phải vào nó, thông qua Properties, thay đổi kiểu Startup của nó thành tự động.

    2. Báo cáo IrisQuản lý Dịch vụ của ngân hàng cụ thể đó được liệt kê là Đã bắt đầu hay không. Nếu nó đang chạy, nó sẽ hiển thị "IRIS BÁO CÁO MANAGER SERVICE" như đã bắt đầu trong danh sách.Nếu không, sau đó chạy nó bằng cách nhấn IRIS.REPORTMANAGER.EXE

    Sau đó lần nữa thiết lập lại IIS

1

Tôi biết vé này là cũ, nhưng tôi chỉ chạy vào vấn đề này và tôi nghĩ rằng tôi sẽ đăng những gì đang xảy ra với tôi và cách tôi giải quyết:

Trong dịch vụ của tôi, tôi đã gọi điện đến đó là một cuộc gọi đến một dịch vụ web khác. Giống như một goof, tôi quên đảm bảo rằng các thiết lập DNS là chính xác khi tôi xuất bản dịch vụ web, do đó dịch vụ web của tôi, khi được xuất bản, đang cố gọi từ api.myproductionserver.local, chứ không phải api.myproductionserver.com. Đó là dịch vụ web phụ trợ đã gây ra thời gian chờ.

Dù sao, tôi nghĩ tôi sẽ vượt qua điều này.

1

Tôi gặp sự cố này. Mã hoạt động tốt khi chạy cục bộ nhưng không hoạt động khi trên máy chủ. Sử dụng psPing (https://technet.microsoft.com/en-us/sysinternals/psping.aspx) Tôi nhận ra rằng cổng ứng dụng không trả lại bất kỳ thứ gì. Hóa ra là sự cố tường lửa. Tôi đã không kích hoạt cổng ứng dụng của mình trong Tường lửa của Windows.

Công cụ quản trị> Tường lửa của Windows với bảo mật nâng cao thêm cổng ứng dụng của tôi vào Quy tắc gửi đến và nó bắt đầu hoạt động.

Bằng cách nào đó số cổng ứng dụng cũng đã có thay đổi, vì vậy mất một thời gian để tìm ra những gì đang xảy ra - vì vậy nghĩ rằng tôi muốn chia sẻ khả năng này trong trường hợp nó tiết kiệm thời gian người khác ...

0

Nó có thể là vấn đề bằng cài đặt proxy trong máy chủ. Bạn có thể thử bằng cách tắt thiết lập proxy,
<defaultProxy enabled="false" />

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