2012-12-21 23 views
7

Trên máy xây dựng từ xa, tôi gặp lỗi sau khi chạy thử nghiệm đơn vị của mình.Không thể kết nối với net.tcp: Nỗ lực kết nối kéo dài trong một khoảng thời gian

Phương pháp thử MyNameSpace1.MyNameSpace2.Service.Test.MyPath.XYZServiceTest.FindRecord ném ngoại lệ: System.ServiceModel.EndpointNotFoundException: Không thể kết nối với net.tcp: //localhost/MyABCServices/XYZService.svc. Nỗ lực kết nối kéo dài trong khoảng thời gian 00: 00: 02.0086605. Mã lỗi TCP 10061: Không có kết nối nào có thể được thực hiện vì máy đích đã chủ động từ chối nó 127.0.0.1:808. ---> System.Net.Sockets.SocketException: Không có kết nối nào có thể được thực hiện vì máy đích đã chủ động từ chối nó 127.0.0.1:808

Tôi có quyền truy cập rất hạn chế vào máy xây dựng này. Tôi không có quyền truy cập vào iis trên máy xây dựng hoặc các dịch vụ như tôi làm trên máy dev cục bộ của mình. Các thử nghiệm đơn vị hoạt động trên máy dev cục bộ của tôi nhưng chúng chạy vào lỗi được đề cập ở trên trên máy xây dựng.

Tôi có thể làm gì để gỡ lỗi này? Tôi đã đọc những thứ như kiểm tra tường lửa vv Nhưng tôi không biết làm thế nào để làm điều đó? Tôi không thể kiểm tra xem dịch vụ Windows cho dịch vụ này có đang hoạt động trên máy xây dựng hay không. Tôi đã cố gắng đăng nhập vào máy xây dựng hoặc kết nối IIS của tôi với máy từ xa này nhưng tôi không thể.

+5

Nhiều người sẽ nói rằng nếu một bài kiểm tra đơn vị truy cập vào mạng hoặc cơ sở dữ liệu thì đó không phải là bài kiểm tra đơn vị. –

+0

Nó thực sự không phải là một bài kiểm tra đơn vị nhưng một thử nghiệm hệ thống, nhưng đó là những gì hầu hết mọi người đang tìm kiếm anyway, mặc dù mọi người nên làm cả hai. Hệ thống kiểm tra là tốt hơn so với không có bài kiểm tra mặc dù. – Jonast92

Trả lời

8

Vấn đề phổ biến nhất đối với tôi là Bộ điều hợp nghe Net.Tcp của Windows Service không chạy trên máy lưu trữ.

Đồng thời kiểm tra ứng dụng web IIS của bạn để đảm bảo các giao thức được bật bao gồm net.tcp. Ví dụ, tôi có "http, net.tcp" và trong các ràng buộc của tôi, tôi có "http: : 94:, net.tcp: 194:"

Tôi không biết cách nào tốt để kiểm tra từ xa IIS được cấu hình đúng hoặc Dịch vụ Windows đang chạy.Bạn không có quản trị viên máy chủ có thể xem các giá trị này cho bạn?

2

127.0.0.1:808 IP thực tế: Cổng được báo cáo trong lỗi? Nếu vậy thì bạn cần sửa IP (127.0.0.1 đồng nghĩa với localhost, do đó sẽ là máy tính cục bộ của bạn).

Nếu không, điều này có vẻ như là sự cố tường lửa.

Có hai nguồn phổ biến của một tường lửa:

  • Router
  • OS

tường lửa Router thường được tìm thấy trên router nối mạng nội bộ với internet. Trong những trường hợp này, bạn (hoặc ai đó có quyền truy cập) sẽ cần đăng nhập vào bộ định tuyến và chuyển tiếp cổng tới IP cho máy. Điều này chỉ được yêu cầu nếu hai máy tính đang cố gắng giao tiếp không có cùng mạng nội bộ.
Ví dụ: nếu máy tính của bạn đang kết nối qua internet với máy chủ thì việc thiết lập chuyển tiếp cổng là bắt buộc. Nếu cả hai máy tính trên cùng một mạng trong cùng một văn phòng thì chuyển tiếp cổng là không cần thiết (trường hợp điều này không đúng là phổ biến ở các công ty lớn hơn, nhưng sau đó có một người CNTT hoặc mạng để giải quyết các vấn đề về cổng).

Giả sử máy chủ của bạn đang chạy Windows, bạn sẽ cần một người có quyền truy cập Quản trị (?) Để đăng nhập và mở cổng hoặc cho phép dịch vụ của bạn chấp nhận yêu cầu gửi đến. Vì bạn đã chỉ ra rằng bạn không có quyền truy cập vào máy chủ, tôi sẽ đề nghị những người phụ trách máy chủ xác minh cấu hình.

+0

Dịch vụ WCF đang chạy trên máy xây dựng và các hoạt động kiểm tra đơn vị giống như một khách hàng sử dụng dịch vụ đó. Cả hai đều trên cùng một máy. Có một cổng ngăn chặn yêu cầu đến từ thử nghiệm đơn vị đến dịch vụ? trong cùng một máy? Tôi sẽ hỏi những loại câu hỏi nào? cảm ơn đã giúp đỡ. –

+0

Khi tôi thiết lập các dịch vụ trên IIS trên máy dev cục bộ .. Tôi đã không chạy vào vấn đề tường lửa? Tôi tự hỏi làm thế nào/nơi quản trị máy xây dựng đã thiết lập các cài đặt này có thể ảnh hưởng đến thử nghiệm đơn vị này để kết nối với dịch vụ. –

+0

@ dotnet-practiceer Nếu máy chủ và các chương trình máy khách đang chạy trên cùng một máy thì có lẽ đó không phải là vấn đề về tường lửa. Tôi không thể giúp đỡ nhiều hơn nữa, câu trả lời của Erik Noren có lẽ là một nơi tốt để bắt đầu. Các tùy chọn khác sẽ là truy cập vào máy chủ và kiểm tra các cài đặt có liên quan. Vì bạn không thể truy cập trực tiếp vào máy chủ, tùy chọn tốt nhất tiếp theo là thiết lập máy chủ thử nghiệm mà bạn có quyền truy cập trực tiếp và thiết lập mọi thứ để chạy ở đó. – Trisped

1

Khi tôi đọc nó, "kiểm tra đơn vị" rõ ràng là mong đợi một điểm cuối WCF net.tcp tại một số địa chỉ localhost. Vì vậy, cho rằng để làm việc bạn có thể một trong hai

  • Thêm dịch vụ theo yêu cầu trên máy chủ xây dựng, trong đó có thể là một máy chủ chia sẻ, hoặc thuộc sở hữu của một nhóm khác, hoặc một số vấn đề khác tôi không cơ mật, hoặc
  • Thay đổi bài kiểm tra đơn vị, để không mong đợi một dịch vụ WCF trực tiếp thực sự, mà là một dịch vụ WCF giả hoặc giả.

Tôi (rõ ràng) đề xuất giải pháp thay thế thứ hai.

6

Starting the Net.Tcp Listener Adapter service has fixed the problem.

Bắt đầu dịch vụ net.tcp Listener Adapter đã khắc phục vấn đề.

+1

Tuyệt vời! Cứu cuộc đời tôi! bạn là nhất! –

+0

Bạn là người giỏi nhất, cảm ơn vì đã chia sẻ điều này! Tôi nghĩ rằng tôi đã phát điên. –

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