У меня есть старая школа. NET удаленное приложение, которое мне нужно было немного расширить. Как часть этого я принес это. NET 4.0. (раньше был. NET 2.0) Хостинг интерфейса выглядит следующим образом
public interface IRemoteSupportVM
{
string runAnOperation(Customer cust, List<CustomRoute> routes);
string runAnotherOperation(string customer, string routes);
string runAThirdOperation(List<string> pathsToBeCleaned);
string writeFile(string path, string filename, int type, byte[] data);
string readFile(string path, string filename, out byte[] data);
string deleteFile(string path, string filename);
long ping();
}
ping, readFile, writeFile и deleteFile работают просто отлично. Когда я вызываю runAnOperation / runAnotherOperation / runAThirdOperation, я сразу получаю SocketExcepting, сообщая мне
Попытка подключения не удалась, потому что подключенная сторона не ответила должным образом через определенный период времени, или не удалось установить соединение, так как подключенный хост не смог ответить
Теперь я теперь вздор, потому что все остальные вызовы работают нормально, и цель получает вызов и выполняет его. Но так как клиент думает, что вызов не удался, все, что приходит после вызова connect, тоже терпит неудачу.
решение имеет множество других интерфейсов удаленного взаимодействия, и, насколько я могу судить, все они работают, кроме этих двух вызовов методов. Есть идеи, что могло бы сбить с толку вызывающего абонента. NET?
@ edit: Я заметил еще одну вещь: операции run * требуют времени для завершения. Другие операции возвращаются немедленно. Поскольку у меня есть код обеих сторон интерфейса удаленного взаимодействия, я установил точку останова для реализации ping (), и теперь я также получаю исключение SocketException, когда клиент вызывает ping. Так что, похоже, тайм-аут, о котором я не знаю.