2010-10-28 43 views
14

Tôi có dịch vụ WCF (cho phép nói TestService.svc ngồi trong thư mục services của một Vùng trong ứng dụng MVC. Khu vực này được kết hợp vào ứng dụng chính . khu vực này được gọi là contentHiển thị các dịch vụ WCF thuộc về một Vùng trong ứng dụng MVC tại đường dẫn được định tuyến

các đường bay này đã được thiết lập và khu vực hoạt động tốt Để truy cập vào hành động Index trên bộ điều khiển Home tôi có thể làm một trong hai:..

http://my-host/areas/content/index/home

hoặc

http://my-host/content/index/home

File SVC tuy nhiên chỉ có thể được truy cập thông qua:

http://my-host/areas/content/services/TestService.svc

URL phải bao gồm các thư mục areas, tôi không thể truy cập trực tiếp thông qua http://my-host/content/services/TestService.svc. Nếu tôi thử tôi bị lỗi 404.

Có cách nào để thiết lập ứng dụng để nó định tuyến yêu cầu SVC thông qua cùng một bảng định tuyến với bộ điều khiển không? Tôi không muốn phải sử dụng areas cho các dịch vụ.

Trả lời

24

Nếu bạn có quyền tự do sử dụng .Net 4.0, bạn có thể muốn xem xét việc cung cấp dịch vụ WCF của mình qua số ServiceRoute thay vì thông qua tệp .svc.

Điều này sẽ cho phép bạn tránh việc có tệp TestService.svc với mã lệnh TestService.svc.cs. Trong Global.asax.cs của bạn, bạn sẽ có các thông tin sau:

public static void RegisterRoutes(RouteCollection routes, IUnityContainer container) 
{ 
    ... other MVC route mapping .... 
    routes.Add(new ServiceRoute("TestService", new ServiceHostFactory(), typeof(LoaEvents))); 
} 

Dịch vụ của bạn có thể truy cập được qua http://my-host/TestService.

Bạn có thể thay đổi đối số "TestService" thành "/content/services/TestService" hoặc thứ gì đó hoạt động tốt hơn cho nhu cầu của bạn.

+0

Như một lưu ý phụ, bạn không thể bắt đầu đường dẫn tuyến đường bằng dấu gạch chéo, vì vậy nó sẽ là 'content/services/TestService'. – Kezzer

+0

Tôi đã có thể sử dụng giải pháp này sau khi áp dụng hạn chế tuyến đường như trong http://geekswithblogs.net/michelotti/archive/2010/09/22/wcf-rest-services-inside-mvc-projects.aspx –

+0

tôi vừa lưu cuộc đời tôi – TheQult

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