servicehostコンストラクタでベースアドレスを指定せずにサービスを作成しました。 を呼び出し、AddServiceEndpointメソッドを呼び出してホストにエンドポイントを追加します。 AddServiceEndpointメソッドでは、私はサービスの完全なアドレスを提供しています。クライアントプロキシでは、呼び出しが失敗しました。「http://localhost:8000/Test/TestServiceでリッスンしているエンドポイントがメッセージを受け入れることができませんでした。これは、不正なアドレスまたはSOAPアクションによって引き起こされることがよくあります。詳細については、InnerExceptionを参照してください。 は、以下のServiceHostのサンプルコードとクライアントのプロキシクライアントが自己ホスト型WCFサービスに接続できないBaseAddressなしで開始
using (ServiceHost host = new ServiceHost(typeof(Test.TestService)))
{
host.AddServiceEndpoint(typeof(Test.ITestService),
new BasicHttpBinding(), "http://localhost:8000/Test/TestService");
Console.ReadLine();
host.Close();
}
クライアントプロキシです:
EndpointAddress ep = new EndpointAddress("http://localhost:8000/Test/TestService");
ITestService proxy = ChannelFactory<ITestService>.CreateChannel(new BasicHttpBinding(), ep);
string s = proxy.HelloWorld();
私はproxy.Helloworldが失敗すると例外が来る呼び出しライン。
しかし、ベースアドレスでServicehostを作成すると、すべて正常に動作しているようです。 は、私がservicehostコンストラクタのベースアドレスを提供するコードです。
using (ServiceHost host = new ServiceHost(typeof(Test.TestService),new Uri("http://localhost:8000/Test")))
{
host.AddServiceEndpoint(typeof(Test.ITestService),
new BasicHttpBinding(), "/TestService");
Console.ReadLine();
host.Close();
}
ここで間違っていることは誰でも答えることができますか? : マイオペレーション契約は以下の通りです:
[ServiceContract]public interface ITestService
{
[OperationContract]
string HelloWorld();
}
public class TestService: ITestService
{
public string HelloWorld()
{
return "Hello World";
}
}
問題がある、私はすべての設定ファイルを使用していないときは午前、すべてが正常に動作しますが、私はベースアドレスを提供していないときのServiceHostコンストラクタ内のベースアドレスを提供servicehostコンストラクタで、AddServicepointメソッドの完全なuriを指定すると例外が発生します。
それは私の質問に答えました。私はホストを呼んでいませんでした。例外が来る理由は2番目のアプローチで開きます。どうもありがとう。 – abcd
+1良い点:) –