パブリック WCF サービスを作成しました。アクセス可能で、機能します。しかし、wsdl で使用可能なメソッドを取得すると、アクセス可能にしたくない一般に公開されているメソッドがあることに気付きました。
例:
public interface IJobs {
List<Jobs> GetAllJobs(); //Good
}
public interface IJobManagement {
void AddNewJob(Jobs job); //Bad
}
設定
<services>
<service name="Services.Data.PublishService" >
<clear/>
<endpoint address="JobsHttp" binding="basicHttpBinding" contract="Services.Data.IJobs" ></endpoint>
<endpoint address="JobsTCP" binding="netTcpBinding" contract="Services.Data.IJobManagement" />
<endpoint binding="mexHttpBinding" name="httpmex" contract="IMetadataExchange"></endpoint>
<endpoint binding="mexTcpBinding" name="mex" contract="IMetadataExchange"></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:9000/"/>
<add baseAddress="net.tcp://localhost:9001"/>
</baseAddresses>
</host>
</service>
</services>
新しいエンドポイントを作成すると問題が解決するのではないかと考えましたが、この構成では何もしませんでした。その理由がわかりました。私は、IJobManagement を一般公開する方法を見つけ出して、ローカル ネットワークでのみアクセスできるようにしようとしています。
これが私のサービス クラスで、そこに私のメソッドが存在します。
public class PublishService : IJobs, IJobsTCP { //Methods are in here. }
編集
さらに説明すると、新しいジョブが追加されると、この WCF サービスにプッシュして変更する別の WCF サービスがあります。List<Jobs>