Как решить исключение безопасности междоменной политики в C#

#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