開いたプロキシ/チャネル内にいくつかの変数を設定しようとすると、タイムアウト例外が発生します。それが悪い DataContract なのか、それとも正しく設定していないものなのかはわかりません。
サービス インターフェイスは次のとおりです。
[ServiceContract]
public interface ICommandBoardService
{
[OperationContract]
void Hello();
[OperationContract]
Command_Board.States getState();
[OperationContract]
void setState(Command_Board.States s);
[OperationContract]
string setConnected(int i);
[OperationContract]
int getConnected();
}
サービスクラスは次のとおりです。
public class CommandBoardService : ICommandBoardService
{
[DataMember]
public Command_Board.States state;
[DataMember]
public int connected = 0;
public void Hello()
{
}
public Command_Board.States getState()
{
return state;
}
public void setState(Command_Board.States s)
{
state = s;
}
public string setConnected(int i){
connected += i;
return "Player "+connected+" Connected";
}
public int getConnected(){
return connected;
}
}
ここでは、ホストを開いてプロキシを呼び出しています。
ICommandBoardService proxy;
using (ServiceHost host = new ServiceHost(typeof(CommandBoardServiceLibrary.CommandBoardService)))
{
host.AddServiceEndpoint(typeof(
CommandBoardServiceLibrary.ICommandBoardService),
new NetTcpBinding(),
"net.tcp://localHost:9000/CommandBoardEndPoint");
host.Open();
proxy = ChannelFactory<ICommandBoardService>.CreateChannel(
new NetTcpBinding(),
new EndpointAddress(
"net.tcp://localhost:9000/CommandBoardEndPoint"));
proxy.setConnected(0);
proxy.setState(state);
}
到達するproxy.setConnected(0)
と次のエラーが発生し、それらを裏返しても同じエラーが発生しますproxy.setState(state)
これはエラーです:
This request operation sent to net.tcp://localhost:9000/CommandBoardEndPoint did not receive a reply within the configured timeout (00:01:00). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the operation or because the service was unable to send a reply message. Please consider increasing the operation timeout (by casting the channel/proxy to IContextChannel and setting the OperationTimeout property) and ensure that the service is able to connect to the client.
エラーを修正するにはどうすればよいですか? 最大バッファを増やすと言う人もいますが、WinForms を使用してそれを行う方法がわかりません。