2011-05-26 41 views
5

Tôi có thể kết nối với dịch vụ WCF từ xa từ bàn điều khiển hoặc trang web/ứng dụng web chạy trên máy chủ VS dev thành công. Tuy nhiên, khi tôi cố gắng kết nối từ một trang web lưu trữ IIS, tôi nhận được lỗi sau. Bất kỳ ý tưởng?Không thể kết nối với dịch vụ wcf từ IIS

No connection could be made because the target machine actively refused it 12.11.121.12:80

Trả lời

4

lỗi này:

No connection could be made because the target machine actively refused it

Có nghĩa là một yêu cầu kết nối có thành công thông qua các máy tính mục tiêu (nó không phải là một vấn đề tường lửa), trên một cổng nhất định và máy mục tiêu đã không được lắng nghe cho các kết nối đến trên cổng đó, do đó hệ điều hành từ chối kết nối.

Phần còn lại của lỗi xác định máy 12.11.121.12 và số cổng 80 mà kết nối đã được thử.

Lỗi cho biết máy chủ không chạy trên máy đích. Nếu bạn biết máy chủ đang chạy trên máy mà bạn đang cố gắng kết nối, vì bạn có thể kết nối với máy từ một ứng dụng khác, điều này cho thấy chi tiết kết nối của bạn bị định cấu hình sai trên trang web.

Vì vậy, một số điều cần kiểm tra:

  • Có bất kỳ sự khác biệt giữa các app.config/chi tiết cấu hình web.config cho webservice mục tiêu? Cụ thể, tên máy (12.11.121.12) và số cổng (80) dường như có tiềm năng.
  • Bạn có đang chạy trang web lưu trữ IIS trên cùng một máy như ứng dụng giao diện điều khiển/web hoạt động không? Nếu không, làm cả hai máy giải quyết tên máy chủ mục tiêu (bạn đang sử dụng someserver.org ví dụ chứ không phải 12.11.121.12 và nó đang được giải quyết cho một IP khác nhau vì một máy chủ là ốp và thứ hai là nội bộ?
+0

Cảm ơn bạn đã trả lời. Tôi bắt đầu xem xét cấu hình đặc biệt là sau câu trả lời của bạn. Máy tính của chúng tôi được cấu hình thông qua proxy vì vậy tôi nghĩ rằng có thể là một vấn đề .. Tôi đã thay đổi một số tham số trong phần tử ràng buộc như bypassProxyOnLocal = "false" useDefaultWebProxy = "false" proxyAddress = "http: // proxyaddress: portno" trong web .config và cùng một lúc mọi thứ bắt đầu hoạt động. Tôi tự hỏi tại sao không có cơ thể nghĩ về điều đó. – VJAI

+0

@Vijaya Anand: Rất vui khi bạn làm việc đó.Proxy chắc chắn là một trong những cách dễ nhất để kết thúc nói chuyện với một máy khác với máy mà bạn cho là :) – forsvarir

+1

@Mark: Một vài điều xung quanh nghi thức trang web, vì vấn đề của bạn dường như đã được giải quyết. Nếu bạn tìm thấy câu trả lời của tôi hữu ích trong việc giải quyết vấn đề của bạn, nó thường là lịch sự để upvote nó. Nếu bạn không chấp nhận nó và/hoặc trao thưởng tiền thưởng (điều đó là hợp lý vì tôi không đề cập đến vấn đề chính xác của bạn), thì bạn nên cân nhắc việc đăng câu trả lời của riêng bạn và chấp nhận thay vì chỉ ra vấn đề giải quyết và làm thế nào. Mặt khác, nếu bạn đang hy vọng được trợ giúp thêm, bạn có thể muốn đăng cập nhật cho câu hỏi của mình để cho biết bạn vẫn còn vấn đề gì. – forsvarir

0

âm thanh này giống như một điều khoản (vấn đề xác thực) vì hồ bơi ứng dụng đang chạy theo một người dùng khác (máy) theo mặc định.Vì WCF sử dụng mã thông báo xác thực, tôi sẽ đặt cược đây là vấn đề của bạn. người dùng làm bàn điều khiển, và tôi đặt cược nó sẽ hoạt động tốt

+0

Lỗi này 'máy mục tiêu chủ động từ chối' xảy ra nếu máy mục tiêu không nghe trên cổng mà nỗ lực kết nối đang được thực hiện (trong trường hợp này do cài đặt proxy, hãy xem nhận xét ops trong câu trả lời của tôi). Nếu đó là vấn đề quyền, lỗi sẽ có nhiều khả năng giống như 'cho phép bị từ chối' hoặc 'lỗi xác thực', nhưng mức xác thực này sẽ không diễn ra cho đến * sau * kết nối đã được thiết lập. – forsvarir

+0

Điểm tốt, cảm ơn sự rõ ràng – hivie7510

0

Thật lạ khi tôi gặp phải lỗi này khi sử dụngDefaultWebProxy là "true" từ một ứng dụng web, nhưng chính xác cùng một mã và cài đặt hoạt động ok trong một bài kiểm tra đơn vị c lass.

Hóa ra là Ứng dụng web đang sử dụng proxy trình duyệt web (chính sách công ty) là https://foo/bar:1234. Khi tôi đặt này explicitely sử dụng:

<system.serviceModel> 
    <bindings> 
    <wsHttpBinding> 
     <binding name=... 
      useDefaultWebProxy="false" proxyAddress="https://foo/bar:1234" 
     ... 

Tôi đã nhận lỗi:

The ServicePointManager does not support proxies with the https scheme

Vì vậy, tôi đã thay đổi địa chỉ proxy để http, https không, và nó làm việc.

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