1

開いたプロキシ/チャネル内にいくつかの変数を設定しようとすると、タイムアウト例外が発生します。それが悪い 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 を使用してそれを行う方法がわかりません。

4

2 に答える 2

0

バインディング プロパティの下にある app.config の maxBufferSize を増やします。

<binding name="blah"
         maxBufferSize="2147483647" -- Max int size
/>
于 2013-11-08T22:42:02.003 に答える