2010-06-15 26 views
6

Tôi đang lưu trữ dịch vụ WCF trong IIS7 trên Windows Server 08, sp2. Dịch vụ được lưu trữ dưới dạng trang web riêng và được hiển thị qua điểm cuối NET.TCP. Dịch vụ hoạt động hoàn hảo cho đến khi lệnh khởi động lại/iisreset được phát hành.restart/iisreset vô hiệu hóa giao thức NET.TCP?

Sau khi khởi động lại hoặc iisreset, khi tôi thực hiện bất kỳ cuộc gọi dịch vụ nào, tôi nhận được lỗi sau: 'System.ServiceModel.EndpointNotFoundException: Không thể gửi thư vì dịch vụ tại địa chỉ điểm cuối' net.tcp: // [website]/[service_name] .svc 'không khả dụng cho giao thức của địa chỉ ..'

Nhật ký sự kiện của máy chủ hiển thị lỗi sau: 'Đã xảy ra lỗi khi cố đọc và khởi tạo ProcessHandlerType được định cấu hình. Ngoại lệ: System.ArgumentException Thông báo: ID giao thức không xác định 'NET.TCP'. StackTrace: tại System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (String protocolId, IListenerChannelCallback listenerChannelCallback) '

Câu hỏi: Làm thế nào để sửa lỗi này? Tại sao giao thức NET.TCP bị tắt sau iisreset? Nó là một lỗi? Tôi có thiếu một số cấu hình không?

Chi tiết thiết lập IIS: - Máy chủ 08 và 08 R2 - Ràng buộc: http, NET.TCP (808: *) - EnabledProtols: http, NET.TCP. - Nhận dạng cho appPool của trang web được đặt thành người dùng cụ thể.

Mẫu mã có sẵn ở đây: http://drop.io/wcfTcpSampleService

Cảm ơn

+1

Hacky (không thể chấp nhận) Cách giải quyết: Tôi có thể làm cho nó hoạt động trở lại nếu (1) tôi loại bỏ NET.TCP khỏi EnabledProtocols của trang web (2) iisreset (3) thêm NET.TCP trở lại EnabledProtocols của trang. Trang web tiếp tục hoạt động cho đến khi iisreset được phát hành lại. IIS đang làm điều gì đó khi tôi thêm NET.TCP vào EnabledProtocols không xảy ra khi IIS bắt đầu khi NET.TCP đã được thêm vào. –

+0

Khi điều này xảy ra, trạng thái của dịch vụ Net.Tcp Listner là gì? Loại khởi động dịch vụ Net.Tcp Listner được đặt là gì? Có bất cứ điều gì nói trong các bản ghi sự kiện hệ thống hoặc ứng dụng? –

+0

Bộ tiếp hợp Net.Tcp Listener được khởi động (kiểu khởi động: Tự động). Lỗi trong nhật ký sự kiện là 'Đã xảy ra lỗi khi cố đọc và khởi tạo ProcessHandlerType được định cấu hình. Ngoại lệ: System.ArgumentException Thông báo: ID giao thức không xác định 'NET.TCp'. StackTrace: tại System.Web.Hosting.ProcessHost.StartProcessProtocolListenerChannel (Giao thức chuỗiId, IListenerChannelCallback listenerChannelCallback) ' –

Trả lời

9

Đã giải quyết. Vấn đề là trường hợp nhạy cảm. Trong AdvancedSettings của ứng dụng web, trường EnabledProtocols phải là trường hợp thấp hơn tức là 'net.tcp' (tôi vừa học được điều này từ hỗ trợ MS).

Tôi giả định (ngu xuẩn) rằng 'NET.TCP' phải là chữ hoa trên vì mô tả trường EnabledProtocols ("... thêm các giá trị đó, chẳng hạn như NET.TCP ...").

Vấn đề lạ, chưa biết là tại sao nó sẽ hoạt động với 'NET.TCP' lần đầu tiên, nhưng đó là một vấn đề khác.

Cảm ơn tất cả các bạn đã giúp mọi người.

+0

Có bất kỳ liên kết nào có sẵn từ hỗ trợ MS về độ nhạy trường hợp không? – alexandrul

+0

@alexandrul Người hỗ trợ MS chỉ có liên kết nội bộ mô tả độ nhạy của chữ hoa. –

+0

Chúng tôi đang gặp sự cố này khi chạy Windows Server 2012. Thay đổi trường hợp của net.tcp không tạo sự khác biệt. Ai khác? – bkstill

0

Bạn có thực sự cần phải làm đầy đủ IISRESET? Tôi tin rằng phương pháp "hiện đại" được đề xuất khi cần phải khởi động lại ứng dụng được lưu trữ trên máy chủ hoàn toàn là tái chế nhóm ứng dụng như sau: iisapp /a <App_Pool_ID> /r (Windows 2003) hoặc appcmd recycle apppool /apppool.name:<App_Pool_Name> (Windows 2008).

+0

Thật không may, dịch vụ này sẽ được lưu trữ trên máy mà nhiều người sẽ có quyền truy cập và tôi không thể ngăn họ thực hiện iisreset. Vấn đề cũng xảy ra khi máy được khởi động lại. –

1

Bạn có thể sử dụng các cổng khác nhau cho giao thức NET.TCP và HTTP không?

Cập nhật

Trên PC của tôi mọi thứ hoạt động như mong muốn, và tôi đã cố gắng cả hai khởi động lại và iisreset. Tôi đã tải lên trong cùng một vị trí dự án của bạn bao gồm cả nhị phân (được sử dụng Visual Web Developer 2010 Express) và ảnh chụp màn hình cài đặt IIS. Nhóm ứng dụng được đặt thành tích hợp .NET 4.0.

iis7 http://www.freeimagehosting.net/uploads/1a727d66ce.png

+0

Tôi đã gặp sự cố này khi sử dụng các cổng 80 và 8008 cho http và 808, 8009, 8089, 9200 cho tcp. –

+0

@Kevin bạn có thể tải lên đâu đó một dịch vụ WCF mẫu để chơi cùng không? – alexandrul

+0

tôi đã thêm liên kết vào vị trí d/l trong câu hỏi gốc. –

0

Phiên bản .NET bạn có (hoặc bạn đã cài đặt)?

Tôi gặp vấn đề tương tự khi chuyển từ .NET 4 RC sang RTM khi dịch vụ TCP đang sử dụng dll từ cài đặt RC (không còn tồn tại) khiến các dịch vụ dừng lại.

+0

Phiên bản .NET 2.0, 3.0, 3.5. Cả hai máy chủ Server 08 và 08 R2 đều là các cài đặt hoàn toàn mới (một máy ảo và một máy vật lý). –

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