UWP访问LocalDB报错:LocalDB实例API方法调用时出现意外错误
解决方案
根因说明
UWP应用默认运行在AppContainer沙箱环境中,被限制访问本地用户私有资源(包括LocalDB实例的互斥体、注册表配置、数据库文件),这是你可以用SSMS、.NET Core API正常访问,但UWP报错的核心原因。
分步解决方法
- 第一步:修改UWP应用清单添加必要权限
用XML编辑器打开项目中的Package.appxmanifest文件:- 在根节点
中添加restrictedcapabilities命名空间声明: xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" IgnorableNamespaces="uap mp rescap" - 在
节点下添加权限: <Capability Name="privateNetworkClientServer" /> <rescap:Capability Name="runFullTrust" />
- 在根节点
- 第二步:给UWP应用启用本地环回豁免
以管理员权限打开PowerShell,执行以下命令,替换其中的「你的UWP包家族名称」为你应用的实际包家族名(可在项目的打包属性页查看):CheckNetIsolation.exe LoopbackExempt -a -n="你的UWP包家族名称" - 第三步:调整LocalDB实例访问权限
- 以管理员权限打开命令提示符,创建共享LocalDB实例,替换现有实例名和共享别名:
sqllocaldb share 你的现有LocalDB实例名 自定义共享别名 - 用SSMS连接到LocalDB实例,执行SQL语句为UWP应用上下文授权:
CREATE LOGIN [ALL APPLICATION PACKAGES] FROM WINDOWS; USE 你的数据库名; CREATE USER [ALL APPLICATION PACKAGES] FOR LOGIN [ALL APPLICATION PACKAGES]; ALTER ROLE db_datareader ADD MEMBER [ALL APPLICATION PACKAGES]; ALTER ROLE db_datawriter ADD MEMBER [ALL APPLICATION PACKAGES]; - 修改UWP项目中的连接字符串,使用共享实例:
Data Source=(LocalDB)\.\自定义共享别名;Initial Catalog=你的数据库名;Integrated Security=True;
- 以管理员权限打开命令提示符,创建共享LocalDB实例,替换现有实例名和共享别名:
- 第四步:验证数据库文件权限
如果你用了AttachDbFilename参数指定mdf文件路径,需要给ALL APPLICATION PACKAGES用户分配mdf、ldf文件所在文件夹的读取、写入权限。
验证
完成以上配置后重新启动UWP应用,即可正常访问LocalDB实例。
内容的提问来源于stack exchange,提问作者Zoidy
相关产品推荐
相关产品推荐

