如何在 C# 中解决跨域策略安全异常

Posted

技术标签:

【中文标题】如何在 C# 中解决跨域策略安全异常【英文标题】:How to solve a crossdomain policy security exception in C# 【发布时间】:2011-09-30 19:10:32 【问题描述】:

我一直在尝试创建 C# IRC 客户端,一切正常,当连接到某些网络时,它会引发如下套接字策略异常:

System.Security.SecurityException:无法连接,因为无效 跨域策略位于 System.Net.Sockets.Socket.Connect_internal(IntPtr 袜子, System.Net.SocketAddress sa,System.Int32& 错误,布尔值 requireSocketPolicyFile) [0x00000] in :0 at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) [0x00000] in :0 at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] 在 :0 处 System.Net.Sockets.TcpClient.Connect (System.Net.IPEndPoint remote_end_point) [0x00000] in :0 at system.Net.Sockets.TcpClient.Connect (System.Net.IPAddress[] ipAddresses,Int32 端口)[0x00000] in :0

这是我用来连接的代码:

//connect the client
client = new TcpClient(serverAddress, serverPort);

当它尝试连接到大多数 IRC 服务器时,它会抛出该异常,但对于某些它不会,因为您可能意识到我需要客户端连接到任何允许它的 irc 服务器。

我曾尝试在 Google 上搜索解决方案,但得到的只是 Silverlight 异常,我没有使用 Silverlight。我已经尝试解决这个问题一周了,但没有运气,我已经编程了 8 年,而且我非常擅长解决问题,但这超出了我的能力范围,因此不胜感激。

问候,艾米。

【问题讨论】:

Server如何提供连接?您是否使用了可能不允许访问网络资源的 AppDomains? 您的代码在哪里运行?这是桌面应用程序(控制台/WinForms/WPF)、浏览器内富客户端应用程序(Silverlight)、服务器应用程序(ASP.NET/其他)吗? 我已经说过它不是 Silverlight,它在桌面上使用 C# .NET,但它也可以在浏览器中运行,不过我在桌面和浏览器上都遇到了同样的问题。和关于服务器的 idk,因为我没有制作服务器,我只连接到它。我知道协议,所以我可以让客户端适当地响应我所做的消息。 【参考方案1】:

您是否尝试过以管理员身份运行程序集?如果可行,那么这是一个安全问题,您需要指定程序所需的权限。因此,如果“以管理员身份运行”有效,请检查:http://msdn.microsoft.com/en-us/library/system.net.socketpermissionattribute%28v=VS.110%29.aspx

【讨论】:

以上是关于如何在 C# 中解决跨域策略安全异常的主要内容,如果未能解决你的问题,请参考以下文章

如何解决跨域问题

如何解决跨域问题

跨域如何解决,什么是同源策略转发

跨域?如何解决?同源策略?

跨域问题’以及如何解决

解决Ajax 跨域问题 - JSONP原理解析