初めて WCF を試していますが、ホストをインスタンス化しようとすると次のエラーが発生します。
このコレクションには、スキーム http... のアドレスが既に含まれています。
これに関する他の多くの参照を見つけて、いくつかの解決策を試してみましたが、役に立ちませんでした。私には当てはまらないかなり一般的なスレッドの 1 つは、問題が何らかの Web サーバーにあるということです。ローカルマシンからすべてを実行しているだけです。
私が見つけた興味深い症状の 1 つは、ac# Forms アプリを開発していることです。もともと、最上位のフォーム オブジェクトは、個別の Service クラスではなく、サービス インターフェイスを継承していました。この方法で実装すると、ホスト側ではエラーが発生しませんが、クライアント側で問題が発生しています。
この解決策に基づいて: 「ChannelDispatcher は IChannelListener を開くことができません」というエラーを解決する方法は?
...サービス ホストを別のオブジェクトに分離することにしました。その時、私は問題を見始めます。
ServiceContract は非常に単純です。
[ServiceContract]
public interface ISSAService
{
[OperationContract]
void CreateSpaMonitor();
}
次のようにサービスをインスタンス化します。
Uri baseAddr = new Uri("http://localhost:8000/SSAService");
ServiceHost localHost = new ServiceHost(typeof(SSAService), baseAddr);
ここで、SSAService は Service インターフェースの実装です。
2行目を次のように変更すると(そしてインターフェースを実装します...)、エラーは消えます:
Uri baseAddr = new Uri("http://localhost:8000/SSAService");
ServiceHost localHost = new ServiceHost(typeof(SSAManager), baseAddr);
SSAManager は、私の最上位の Forms クラスです...
次に、私が始めたクライアント側の問題に遭遇しました....
ポート番号を変更してみましたが、何の影響もないようです。
私はWCFが初めてなので、明らかな何かが欠けているかもしれません。
ありがとう。