我正在開發使用WCF的RESTful Web服務。我希望有一個ServiceContract
接口,可以實現我所有的服務,但是,我還希望每個服務都能夠實現自己的方法。使WCF .NET服務實現實現多個ServiceContract接口
在我的Global.asax文件我初始化服務路線:如下
[ServiceContract]
public interface IAppService
這是實現:
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
接口
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class iOSAppService : IAppService
但是,我會例如也喜歡iOSAppService
實現IiOSApService接口:
[ServiceContract]
public interface IiOSAppService
因此導致執行:
public class iOSAppService : IAppService, IiOSAppService
然而,這將導致以下例外:
服務 'iOSAppService' 實現多種的ServiceContract類型,並且沒有端點在配置文件中定義。 WebServiceHost可以設置默認端點,但前提是該服務只實現一個ServiceContract。將服務更改爲僅實現單個ServiceContract,或者在配置文件中明確定義服務的端點。
有誰知道我該如何實現我的目標?
DataContract定義了什麼數據被序列化。 ServiceContract公開了這些方法。我不認爲你想讓你的ServiceContract繼承你的DataContract。正如錯誤所述,它們是兩種不同類型的合同。 – darethas 2012-07-25 12:40:38
爲什麼你用'[DataContract]'裝飾界面?該屬性用於作爲參數參與的類(in-or -return types)。 「ServiceContract」和「OperationContract」屬性用於服務及其方法。 – abatishchev 2012-07-25 12:42:59
@abatishchev根據錯誤消息,我認爲這是一個錯字。基於這個問題,我很確定OP知道DataContract和ServiceContract之間的區別。 – shambulator 2012-07-25 12:51:16