以下の例を確認してください
namespace GServices
{
[ServiceKnownType(typeof(SearchType))]
[ServiceContract(SessionMode = SessionMode.Allowed)]
public interface ITest
{
[OperationContract]
int subtract(int x, int y);
}
[ServiceKnownType(typeof(SearchType))]
[ServiceContract(SessionMode = SessionMode.Allowed)]
public interface ITest2
{
[OperationContract]
int add(int x, int y);
}
public class G : ITest2, ITest
{
public int add(int x, int y)
{
return x + y;
}
public int subtract(int x, int y)
{
return x + y;
}
}
}
ITestにはsubtract()メソッドがあり、Itest2にはadd()メソッドがあります。
両方とも、G と呼ばれる 1 つの具象クラスによって実装されます。
WCF を介して ITest を公開するだけの場合は、次のエンドポイント構成があります。
<service name="GQS1" behaviorConfiguration="GQwcfBehaviour">
<endpoint address="DP2Svcs" binding="wsHttpContextBinding" bindingConfiguration="wsHttpEndpointBindingConfig" contract="GServices.itest">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</service>
このサービスを実行して wsdl を確認すると、itest2 にあるメソッドが wsdl にも表示されていることがわかります。この例では、subtract() メソッドのみを公開する必要があります。しかし add() メソッドも公開されています。
私の要件は、ITest インターフェイスのメソッドを公開することだけです。この場合、ITestで宣言されているsubtract()メソッドのみを公開したいと思います。しかし、それらの実装は両方とも、1 つの具象クラス「G」のみに存在します。ここで何が欠けていますか?
編集: Service.svc ファイルの内容を指定しました:
<%@ ServiceHost Language="C#" Debug="true" Service="GServices.G" %>