Uno Platform应用复用TCP代码报错Socket Err 10013权限问题求助
问题原因
你遇到的10013套接字权限错误,根源是Windows平台下打包型应用的沙箱权限限制:
- 原生控制台应用不受沙箱约束,默认可以直接访问本地网络
- Uno Platform编译的Windows端应用(UWP/打包为MSIX的WinUI 3应用都包含在内)默认未授予私有网络访问权限,直接发起局域网TCP连接就会触发权限拒绝报错
解决方法
添加网络访问权限
打开你项目里的Package.appxmanifest清单文件,切换到「功能」标签,勾选 私有网络(客户端和服务器) 选项,保存后重新编译运行即可。如果你的应用后续还要访问公网,额外勾选「Internet(客户端)」即可。可选优化(避免界面卡顿)
你当前把Socket同步阻塞操作直接写在UI点击事件的主线程里,连接/读写操作耗时高时会导致界面无响应,建议改用异步API:把socket.Connect(endpoint)替换为await socket.ConnectAsync(endpoint),同步的Write/Read方法也对应换成异步版本,同时给点击事件加async修饰符即可。
你之前尝试的防火墙调整、权限组配置都和问题无关,按上述步骤添加清单权限后即可正常运行。
内容的提问来源于stack exchange,提问作者user13665526
相关产品推荐
相关产品推荐

