これは非常に単純な WCF サンプルであり、なぜ失敗するのかわかりません。
これは、WCF クラス ライブラリ プロジェクトで定義されています。
これはコントラクトを定義するインターフェースです:
<ServiceContract()> _
Public Interface IService1
<OperationContract()> _
Function GetData(ByVal value As Integer) As String
<OperationContract()> _
Function Ping() As Boolean
End Interface
これはインターフェースの実装です:
<ServiceBehavior(IncludeExceptionDetailInFaults:=True)> _
Public Class Service1
Implements IService1
Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData
Return String.Format("You entered: {0}", value)
End Function
Public Function Ping() As Boolean Implements IService1.Ping
Return True
End Function
End Class
次に、Server というコンソール アプリケーションで、上で定義したサービスへのサービス参照を追加しました。次のようにサービス ホストを作成します。
static void Main(string[] args)
{
try
{
ServiceHost serviceHost = new ServiceHost(typeof(ServiceReference.Service1Client));
NetTcpBinding netTcpBinding = new NetTcpBinding();
serviceHost.AddServiceEndpoint(typeof(ServiceReference.IService1), netTcpBinding, "net.tcp://localhost:9007/Service/");
Console.WriteLine("Service started at net.tcp://localhost:9700/Service");
serviceHost.Open();
Console.WriteLine("Host opened");
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.Read();
}
finally
{
Console.WriteLine("Service closed");
}
}
次に、Client という別のコンソール アプリケーションで、サービスへのサービス参照を追加し、次のようにプロキシ クライアントを作成します。
static void Main(string[] args)
{
NetTcpBinding netTcpBinding = new NetTcpBinding();
try
{
var serviceClient = new Client.ServiceReference1.Service1Client(netTcpBinding, new EndpointAddress("net.tcp://localhost:9007/Service/"));
serviceClient.InnerChannel.OperationTimeout = TimeSpan.FromMinutes(10);
Console.WriteLine("Pinging server");
if (serviceClient.Ping())
{
Console.WriteLine("Getting Data");
var result = serviceClient.GetData(1);
Console.WriteLine("Result is " + result);
}
else
{
Console.WriteLine("Server is not responding");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
実行するServer.exe
と、Service started at net.tcp://localhost:9700/Serviceと表示されます
実行すると、サーバーにPingがClient.exe
表示されます
次に、WCF クラス ライブラリ プロジェクトでデバッグできないエラーが発生し、最後に例外が発生しClient.exe
ます。
net.tcp://localhost:9007/Service/ に送信されたこの要求操作は、構成されたタイムアウト (00:01:00) 内に応答を受信しませんでした。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。これは、サービスがまだ操作を処理中であるか、サービスが応答メッセージを送信できなかったことが原因である可能性があります。(チャネル/プロキシを IContextChannel にキャストし、OperationTimeout プロパティを設定することによって) 操作のタイムアウトを増やすことを検討し、サービスがクライアントに接続できることを確認してください。
私のラップトップではシンプルでローカルで実行されているので、タイムアウトなどの問題はないと思います。
誰か光を当てることができますか...感謝します