Я создаю службу WCF, и время ожидания истекает, когда она используется в некоторых моих интеграционных тестах.Я был в состоянии сузить это, и это демонстрируется следующим кодом.Похоже, что создание формы до создания хоста вызывает проблему, но я не уверен, почему.
class Program
{
[ServiceContract]
public interface IMyContract
{
[OperationContract]
void Ping();
}
public class MyContract : IMyContract
{
public void Ping()
{
Console.WriteLine("Ping");
}
}
public class MyContractProxy : ClientBase<IMyContract>, IMyContract
{
public MyContractProxy(int port)
: base(new NetTcpBinding { SendTimeout = TimeSpan.FromSeconds(5) }, new EndpointAddress(string.Format("net.tcp://localhost:{0}", port)))
{
}
public void Ping()
{
Channel.Ping();
}
}
static void Main(string[] args)
{
try
{
new Form();
var host = new ServiceHost(typeof(MyContract));
host.AddServiceEndpoint(typeof(IMyContract), new NetTcpBinding(), "net.tcp://localhost:12345");
host.Open();
var proxy = new MyContractProxy(12345);
proxy.Open();
proxy.Ping();
}
catch (Exception e)
{
Console.Error.WriteLine(e);
}
}
}