#c# #.net #sockets #exception #policy
#c# #.net #сокеты #исключение #политика
Вопрос:
Я пытался создать IRC-клиент C #, у меня все работает, и при подключении к некоторым сетям он выдает исключение политики сокетов следующим образом:
Система.Безопасность.Исключение SecurityException: не удалось подключиться, поскольку в System.Net.Sockets не найдена действительная политика междоменной политики.Сокет.Connect_internal (IntPtr sock, System.Net.SocketAddress sa, System.Int32 и ошибка, логическое значение requiresocket policyfile) [0x00000] в : 0 в System.Net.Sockets.Сокет.Подключитесь (System.Net.EndPoint remoteEP, логическое значение requireesocket policy) [0x00000] в :0 в System.Net.Sockets.Сокет.Подключитесь (System.Net.EndPoint remoteEP) [0x00000] в : 0 в System.Net.Sockets.TcpClient.Подключитесь (System.Net .IPEndPoint remote_end_point) [0x00000] в :0 в system.Net.Sockets.TcpClient.Подключитесь (System.Net .IPAddress[] ipAddresses, порт Int32) [0x00000] в: 0
Вот код, который я использую для подключения:
//connect the client
client = new TcpClient(serverAddress, serverPort);
В тот момент, когда он пытается подключиться к большинству IRC-серверов, он выдает это исключение, но для некоторых этого не происходит, как вы, вероятно, понимаете, мне нужно, чтобы клиент подключался к любому irc-серверу, который это позволяет.
Я пытался искать решения в Google, но все, что он придумал, это исключения Silverlight, я не использую Silverlight. Я безуспешно пытался решить эту проблему в течение недели, я программирую уже 8 лет, и я довольно искусен в решении проблем, но это выше моих сил, поэтому любая помощь приветствуется.
С уважением, Эми.
Комментарии:
1. Как сервер обеспечивает соединение? Используете ли вы домены приложений, которым может быть запрещен доступ к сетевым ресурсам?
2. Где выполняется ваш код? Является ли это настольным приложением (console / WinForms / WPF), клиентским приложением в браузере (Silverlight), серверным приложением (ASP.NET / другое)?
3. я уже сказал, что это не silverlight, он использует C # .NET на рабочем столе, но он также может работать в браузерах, хотя я сталкиваюсь с той же проблемой как на рабочем столе, так и в браузерах. и idk о сервере, потому что я не создаю сервер, я только подключаюсь к нему. Я знаю протокол, поэтому могу заставить клиента соответствующим образом отвечать на сообщения, что я и сделал.
Ответ №1:
Вы пробовали запускать сборку от имени администратора? Если это работает, то это проблема безопасности, и вам нужно указать разрешение, которое требуется вашей программе. Итак, если «Запуск от имени администратора» работает, проверьте: http://msdn.microsoft.com/en-us/library/system.net.socketpermissionattribute(v=VS.110).aspx