加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Silverlight 5打开套接字AccessDenied

发布时间:2020-12-15 21:04:21 所属栏目:百科 来源:网络整理
导读:我有一个Silverlight 5应用程序尝试建立到服务器的套接字连接,如下所示: var targetEndpoint = new DnsEndPoint("subdomain.maindomain.com",443);var clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);var sock
我有一个Silverlight 5应用程序尝试建立到服务器的套接字连接,如下所示:

var targetEndpoint = new DnsEndPoint("subdomain.maindomain.com",443);
var clientSocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
var socketAsyncEventArgs = new SocketAsyncEventArgs {RemoteEndPoint = targetEndpoint};
socketAsyncEventArgs.Completed += AsyncConnectCallback;
clientSocket.ConnectAsync(socketAsyncEventArgs);

我在https://subdomain.maindomain.com/clientaccesspolicy.xml上有以下clientaccesspolicy.xml文件:

<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*" http-methods="*">
                <domain uri="https://subdomain.maindomain.com"/>
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <resource path="/" include-subpaths="true"/>
                <socket-resource port="4502" protocol="tcp"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>

我能够从visual studio运行Silverlight应用程序的本地实例,并且可以建立套接字连接,既可以在浏览器中运行,也可以在浏览器外运行.部署应用程序时,我仍然可以使用浏览器外版本进行连接,但浏览器内版本错误,并显示以下消息:

AccessDenied:尝试以其访问权限禁止的方式访问套接字.

在我从Visual Studio运行的本地环境中,如果我创建了一个hosts文件条目:

127.0.0.1 myapp.local

并更新我的localhost in-browser实例(从VS运行)以使用myapp.local,我可以重现相同的错误,这表明当根域不是localhost时发生错误,无论应用程序托管在何处.

我检查了我的防火墙和防病毒软件的事件日志,看是否有可能阻止连接请求的迹象,但没有看到任何证据.

有没有其他人遇到过这个问题,并提出我的问题的建议?

解决方法

根据问题的描述以及评论和文章 “Relaxed Cross-Domain Access Restrictions”,我认为最有可能的问题是当应用程序以“浏览器内”模式运行时的访问限制.

要验证您的应用程序是否以受信任的权限运行,您可以检查属性Application.HasElevatedPermissions是否为true.

另外,请尝试按照本指南How to: Enable Trusted Applications to Run Inside the Browser进行操作

确保服务器的防火墙不阻止“策略服务器”端口943

如果仍然无法连接到服务器,请尝试将服务所在的端口更改为4502到4534范围内的某个端口.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读