2010-03-25 38 views
6

Tôi đang gặp vấn đề với dịch vụ WCF của mình. Tôi cần phải làm một container container windsor trước application_start và nhận thấy tôi có thể sử dụng phương pháp AppInitialise. Nó hoạt động trên gỡ lỗi studio trực quan nhưng khi tôi triển khai IIS mã không bị sa thải .. Tôi đã khởi tạo lớp như sauHooking vào AppInitialize với dịch vụ WCF

public static class Class1 
{ 
    public static void AppInitialize() 
    { 
     IWindsorContainer container; 
     container = new WindsorContainer("windsor.xml"); 
     container.AddFacility<WcfFacility>(); 
     container.Resolve<ProfileLookUpService>(); 
    } 
} 

Có nhiệm vụ đặc biệt nào cần làm để làm việc này trên IIS không. Tôi đang sử dụng phiên bản 6.

Cảm ơn!

Trả lời

4

Vâng, bạn cần phải nhận thức được nhiều điều:

  • một dịch vụ WCF có thể tự lưu trữ - nó không phải luôn luôn lưu trữ trong IIS, do đó, không dựa trên một cơ chế IIS cụ thể, nếu bao giờ có thể

  • một dịch vụ WCF trên server-side về cơ bản bao gồm một ServiceHost (hoặc một hậu duệ tùy chỉnh của chúng), khởi tạo thời gian chạy WCF, và nó sẽ tạo ra trường hợp lớp dịch vụ khi cần thiết để xử lý các yêu cầu

Vì vậy, nó thực sự phụ thuộc vào nơi bạn muốn tiêm công cụ của bạn - cảm giác ruột của tôi sẽ cho tôi biết bạn có thể quan tâm đến khả năng tạo ra một hậu duệ ServiceHost tùy chỉnh, và móc vào một số phương pháp và sự kiện của nó để xử lý khởi tạo của bạn .

Kiểm tra một số điều thực sự tốt và bài viết trên blog về chủ đề ở đây:

+0

Nếu tôi muốn (dịch vụ WCF) để xây dựng một kết nối socket liên tục với một máy chủ bất cứ khi nào dịch vụ WCF bắt đầu, bạn có thể đề nghị/tư vấn về cách làm như vậy không? Như bạn đã đề cập trong câu trả lời của bạn rằng chúng ta không nên dựa vào một cơ chế cụ thể của IIS. – FaizanRabbani

-1

Nếu AppInitialize() không được kêu gọi khởi động ở máy chủ triển khai của bạn, sau đó rất có thể bạn chưa bật kích hoạt WCF Non-Http trên máy chủ đó.

Đi tới bảng điều khiển> Chương trình và tính năng> Bật hoặc tắt tính năng của Windows rồi tìm ‘Microsoft .NET Framework 3.5.1’. Theo tùy chọn này, hãy đảm bảo rằng tùy chọn Kích hoạt không hỗ trợ Windows Communication Foundation được cài đặt.

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