我正在使用 WCF 开发 RESTful Web 服务。我希望有一个ServiceContract
我的所有服务都实现的接口,但是,我还希望每个服务都另外实现自己的方法。
在我的 Global.asax 文件中,我初始化了服务路由:
RouteTable.Routes.Add(new ServiceRoute("iOSAppService", new WebServiceHostFactory(), typeof(Service.iOSAppService)));
RouteTable.Routes.Add(new ServiceRoute("AndroidAppService", new WebServiceHostFactory(), typeof(Service.AndroidAppService)));
RouteTable.Routes.Add(new ServiceRoute("WindowsPhoneAppService", new WebServiceHostFactory(), typeof(Service.WindowsPhoneAppService)));
每个服务都必须实现IAppService
接口:
[ServiceContract]
public interface IAppService
其实现如下:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class iOSAppService : IAppService
但是,例如,我还希望iOSAppService
实现 IiOSApService 接口:
[ServiceContract]
public interface IiOSAppService
从而导致实现:
public class iOSAppService : IAppService, IiOSAppService
但是,这会导致以下异常:
Service 'iOSAppService' 实现了多种 ServiceContract 类型,并且在配置文件中没有定义端点。WebServiceHost 可以设置默认端点,但前提是服务仅实现单个 ServiceContract。要么将服务更改为仅实现单个 ServiceContract,要么在配置文件中明确定义服务的端点。
有谁知道我怎样才能实现我的目标?