У меня есть старое школьное приложение для удаленного взаимодействия .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. Так что, похоже, тайм-аут, о котором я не знаю.