私はちょうど wcf を学んでいて、WCF サービスを作成しようとしましたが、この例外が発生し続けます:
未処理の例外: System.ServiceModel.EndpointNotFoundException:
http://localhost:8733/Person/
メッセージを受け入れることができるリッスンしているエンドポイントがありませんでした。これは、多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、存在する場合は InnerException イオンを参照してください。---> System.Net.WebException: リモート サーバーに接続できません ---> System.Net.Sockets.SocketException: ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8733
WCF サービス ライブラリを作成することから始めました。ここでサービス コントラクトとデータ コントラクトを定義しました。エンドポイント ウィッチを次のように構成しました。
<service name="SelfHosting.PersonContract">
<endpoint address="" binding="basicHttpBinding" contract="SelfHosting.IPersonContract">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Person/" />
</baseAddresses>
</host>
</service>
これらの 2 つのエンドポイントは既に追加されており、必要に応じて構成したところです。mex エンドポイントが何に使用されているのかわからないので、誰かに教えてもらいたいと思っています。
次に、コンソール アプリケーションを作成し、サービスへの参照を追加しました。サービスのインスタンスを初期化してから、それを呼び出してみました。
static PersonContractClient client = new PersonContractClient();
static void Main(string[] args)
{
var persons = client.GetPersons();
foreach (var personData in persons)
{
Console.WriteLine(personData.Name);
Console.WriteLine(personData.Email);
}
}
サービスへの参照を追加すると自動的に追加されることがわかっているため、クライアントにエンドポイントを設定していません。これは、参照を追加した後に追加されました。
<endpoint address="http://localhost:8733/Person/" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IPersonContract" contract="PersonNamespace.IPersonContract"
name="BasicHttpBinding_IPersonContract" />
私のソリューションには、Entity Framework を使用して取得したデータを持つ別のプロジェクトも含まれています。これが問題に関連しているかどうかはわかりません。
ここで何が間違っていますか?