2009-07-28 22 views
15

Tôi có dịch vụ WCF sử dụng giao thức net.msmq, được lưu trữ trong IIS 7. Vấn đề của tôi là các dịch vụ không kích hoạt khi thông báo mới xuất hiện trên hàng đợi, bạn phải duyệt đến các dịch vụ trước, trước khi chúng bắt đầu chọn bất kỳ tin nhắn nào.WCF net.msmq dịch vụ tự động kích hoạt

Có cách nào để tự động kích hoạt các dịch vụ này không?

Cảm ơn trước sự giúp đỡ nào

Kind Regards, Brian

+0

Chúng tôi gặp vấn đề tương tự, tôi đang mở một cuộc gọi hỗ trợ với Microsoft để khắc phục sự cố. Tôi tự hỏi nếu có một cách để biết chính xác lỗi hoặc lý do tại sao nó không được kích hoạt – user80855

Trả lời

3

Có một loạt ba phần thực sự tốt vào việc WCF, MSMQ và IIS và chạy và chơi độc đáo với nhau trên blog của Tom Hollander:

Có thể chúng sẽ giúp ích? MSMQ được lưu trữ trong IIS7 chắc chắn sẽ tự động nhận các thông báo WCF, nếu mọi thứ được cấu hình đúng.

Có một vài cài đặt không được đặt ra khỏi hộp - xem phần 1. Bạn có thể cần phải thêm và bật các tính năng bổ sung của Windows và bạn có thể cần chạy công cụ appcmd.exe để định cấu hình WAS (Windows Activation Server, một phần của IIS7) để tự động xử lý các yêu cầu không phải http.

Marc

3

Tôi biết đó là một bài cũ nhưng trong trường hợp ai đó đi qua với vấn đề mà ...

Nếu dịch vụ không kích hoạt một lần hồ bơi ứng dụng đã được tắt máy, nó có lẽ là nhất vì tên hàng đợi không khớp với URI của dịch vụ và vì vậy WAS không biết ứng dụng nào cần kích hoạt.

Vì vậy, ví dụ, nếu bạn tạo một ứng dụng "Dịch vụ" trong trang web mặc định và có một FirstService.svc, tên hàng đợi nên private $ \ Services/FirstService.svc

[Chỉnh sửa: Tên hàng đợi phải chứa tên ứng dụng cũng ở dạng số nhiều]

2

Điều này là do thực tế là WAS sẽ không tự động hoạt động hoặc "khởi động" khi sử dụng MSMQ. Các giải pháp là để xem xét các IIS 7 Warm Up module hoặc có một cái gì đó giống như một cân bằng tải ping dịch vụ của bạn (chúng tôi đang sử dụng một thiết bị F5 để làm điều này). Cập nhật - đây là liên kết cho IIS 8 App Initialization

+0

Liên kết của bạn đã chết. Ứng dụng IIS 8.0 có được khởi tạo thay thế không? –

+0

Có, bạn chính xác –

+0

Giải pháp này phù hợp với tôi. Trong IIS 7.5, bạn sẽ phải tải xuống mô-đun khởi tạo ứng dụng dưới dạng cài đặt riêng biệt. –

0

Tôi thấy rằng, trên Windows 7 với IIS 7.5 và .NET 4.0, dịch vụ NetMsmqActivator bị tắt và bị chặn theo mặc định. Bạn cần phải kích hoạt nó và bắt đầu nó.

Hơn nữa, hàng đợi phải cho phép "Nhận tin nhắn" và "Tin nhắn Peek" cho tài khoản được sử dụng bởi nhóm ứng dụng và cho tài khoản được sử dụng bởi NetMsmqActivator. Trên cài đặt mặc định, bạn có thể sử dụng IIS APPPOOL\ASP.NET v4.0 (bạn sẽ phải nhập nó vào: đó là 3 'P, hãy cẩn thận với khoảng trắng) và NETWORK SERVICE.

0

Chúng tôi đã quan sát vấn đề này trong hơn một tháng nay trong một hệ thống với các đặc tính này:

  • dịch vụ hỗn hợp, cả http và msmq Dựa tổ chức trong WS trên giao thức IIS7.5
  • msmq được sử dụng : net.msmq
  • dịch vụ không hosed trong trang web gốc, nhưng trong ứng dụng bên dưới

Chúng tôi đã chạy qua tất cả các chủ trương, giải quyết vấn đề liên quan đến tecniques: * Thiết lập giao thức ở cấp độ ứng dụng và iis. * đặt tên hàng đợi * cài đặt bảo mật của hàng đợi, dịch vụ cửa sổ và iis

Nhưng vấn đề vẫn tồn tại. Giải pháp của chúng tôi là tuân thủ điều này: http://www.daczkowski.net/tag/wcf/ Đó là cài đặt appfabric lên iis của chúng tôi và thiết lập các dịch vụ cho tự khởi động.

Vấn đề chính nó là khá khó khăn để xác định đầy đủ, những gì chúng ta có thể nói duy nhất là "đôi khi các dịch vụ sẽ ngừng chế biến từ hàng đợi"

-1

Chỉ cần đặt ứng dụng Auto-Start để 'bật' trong IIS

0

Giải pháp của tôi là kết hợp một số câu trả lời ở đây. Hàng đợi của tôi đã bật xác thực, do đó, một số bước có thể không cần thiết nếu xác thực không được sử dụng.

Dưới đây là các bước tôi làm theo để đặt nó để làm việc, trên một cửa sổ 2012:

1) Cài đặt phi http dịch vụ kích hoạt WAP (https://msdn.microsoft.com/en-us/library/ms731053(v=vs.110).aspx)

2) Tạo hàng đợi có cùng tên như ứng dụng IIS, như thế này private$/<WCF application>/myservice.svc.

Dịch vụ Net.Msmq Listener Adapter sẽ cố gắng khớp hàng đợi và tên ứng dụng WCF trong IIS như được chỉ định bởi VdesmedT.

3) Bật giao thức trên trang web và ứng dụng.

Đầu tiên tạo ra các ràng buộc:.

% windir% \ system32 \ inetsrv \ appcmd.exe thiết lập trang web "Default Web Site" - bindings + [protocol = 'net.tcp', bindingInformation =' 808: * ']

bindings trang web sẽ trông như thế này: enter image description here

Sau đó, cho phép các giao thức net.msmq cho trang web

% windir% \ system32 \ inetsrv \ appcmd.exe đặt cấu hình -section: system.applicationHost/sites "/ [name = 'Trang web mặc định']. [Path = '/']. EnabledProtocols": "http, net.msmq"/commit: apphost

Lệnh này sẽ ghi lại các giao thức, vì vậy nếu bạn bật hơn http, bạn cần thêm nó vào dòng lệnh.

Tại nâng cao settins bạn sẽ thấy điều này:

enter image description here

Và cuối cùng cho phép các giao thức net.msmq cho ứng dụng.

% "Default Web Site /" windir% \ system32 \ inetsrv \ appcmd.exe đặt ứng dụng /enabledProtocols:http,net.tcp

Màn hình Cài đặt nâng cao cho các ứng dụng sẽ hiển thị giống nhau điều xuất hiện trên Cài đặt nâng cao cho trang web, tại dòng giao thức được bật.

4) Cấp quyền trên hàng đợi cho ứng dụng IIS để đọc, xem và xóa, nhận thuộc tính và đặt thuộc tính. Tài khoản mặc định là IIS AppPool \ DefaulApp

5) Cho phép cái nhìn trên hàng đợi cho các dịch vụ Net.Msmq Listener Adapter (mặc định là Network Service)

không cần nhưng tôi đã phải khởi động lại sau khi thay đổi quyền.

Kiểm tra:

  • Để kiểm tra xem WCF được thiết lập đúng cách chỉ cần sử dụng trình duyệt ứng dụng WCF để kích hoạt nó. Bất kỳ thư nào trong hàng đợi đều phải được xử lý.

  • Để kiểm tra xem WAS có đang kích hoạt ứng dụng WCF hay không, hãy tái chế nhóm Ứng dụng và gửi thư mới. Nếu WAS hoạt động, nó sẽ được xử lý ngay lập tức.

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