2012-02-27 46 views
8

Tôi hoàn toàn mới với WCF và triển khai dịch vụ. Tôi gặp sự cố khi thiết lập dịch vụ của mình trên IIS 6.0.Làm thế nào để triển khai dịch vụ WCF của tôi trên IIS 6.0?

Tôi cần các bước chính xác để triển khai dịch vụ WCF của mình trên IIS 6.0.

Lưu ý: Tôi tạo ra một ứng dụng WCF dịch vụ ...

Vì vậy, các bước chính xác tôi cần phải làm theo để triển khai dịch vụ WCF của tôi trên IIS 6.0 là gì?

+2

Xem: http://www.youtube.com/watch?v=mX8quq7MoeI –

+2

Hoặc MSDN tại đây: http://msdn.microsoft.com/en-us/library/ms733766.aspx –

Trả lời

11

Bạn có về cơ bản hai lựa chọn, tôi tin rằng:

Lựa chọn 1 - "bin" triển khai (tùy chọn ưa thích)

  1. biên dịch dịch vụ WCF của bạn thành một DLL (thư viện lớp)
  2. tạo một trang web trong IIS6
  3. sao chép WCF DLL vào thư mục .\bin của trang web
  4. tạo một *.svc tập tin trong trang web mà
  5. thêm một thích hợp web.config trong thư mục trang web để xác định điểm cuối của bạn và cấu hình dịch vụ vv

dịch vụ WCF của bạn bây giờ sẽ có thể truy cập tại địa chỉ cơ sở của trang web, cộng với tên của *.svc tệp, ví dụ

http://myserver/someweb/Myservice.svc 

bạn *.svc sẽ giống như thế này:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService" %> 

Các Service= thuộc tính biểu thị lớp thực hiện dịch vụ - đầy đủ với không gian tên của nó.

Lựa chọn 2 - đưa công cụ vào App_Code

  1. tạo một trang web trong IIS6
  2. đặt tất cả WCF của bạn liên quan *.cs tập tin trực tiếp vào thư mục .\App_Code
  3. tạo một file *.svc trong trang web mà
  4. thêm web.config thích hợp vào thư mục trang web để xác định điểm cuối và cấu hình dịch vụ của bạn, v.v.

Dịch vụ WCF của bạn giờ đây sẽ có thể truy cập được tại địa chỉ cơ sở của trang web, cùng với tên của tệp *.svc, ví dụ:

http://myserver/someweb/Myservice.svc 

bạn *.svc sẽ giống như thế này:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %> 

Một đơn giản, mẫu web.config có thể trông như thế này:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="WithDebug"> 
       <serviceMetadata httpGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="true" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <services> 
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="true"> 
     <endpoint 
      address="" 
      binding="basicHttpBinding" 
      contract="SimpleWCF.IHelloIndigoService" /> 
     <endpoint 
      address="mex" 
      binding="mexHttpBinding" 
      contract="IMetadataExchange" /> 
    </service> 
    </services> 
</system.serviceModel> 

Bạn về cơ bản xác định thẻ <service> của bạn - và một lần nữa: name= biểu thị lớp đang triển khai dịch vụ - hoàn toàn đủ điều kiện với không gian tên của nó. Nó phải chứa ít nhất một điểm cuối - vì IIS6 chỉ hỗ trợ HTTP, bạn có thể sử dụng basicHttpBinding hoặc wsHttpBinding và đó là tất cả những gì có. Điểm cuối "mex" là tùy chọn - nhưng rất hữu ích, đặc biệt là để phát triển và thử nghiệm. Nó cho phép khách hàng "khám phá" dịch vụ và nhận được mô tả dịch vụ của nó để nó có thể giao tiếp với nó.

Khi dịch vụ của bạn được triển khai trong IIS, bạn có thể nhìn thấy nó trong hành động sử dụng một công cụ như WCF Test Client rằng tàu miễn phí với WCF, hoặc SoapUI mà là một tiện ích đa năng thử nghiệm SOAP (với một phiên bản miễn phí để bạn có thể sử dụng).

+0

Tôi có cần phải thêm bất cứ điều gì trong thẻ địa chỉ của điểm cuối đầu tiên của tôi? – Willem

+2

@Willem: thường là không - khi lưu trữ trong IIS, đó là thư mục ảo của IIS kiểm soát địa chỉ. Bạn có thể thêm một cái gì đó như 'MyService' vào nó - một địa chỉ" tương đối "- sau đó dịch vụ của bạn sẽ có tại' http: // MyServer/VirtualDir/MyService.svc/MyService' - nhưng vì tệp '* .svc' đó nằm trong có anyway, những địa chỉ có được một chút clunky .... –

+1

Đó là tuyệt vời. Cảm ơn nhiều – Willem

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