WPF 的 Browser Application,运行于IE、Firefox(需要插件)等浏览器中,方便了部署,但也受至于浏览器的安全性限制。例如,有时候,需要访问磁盘上某个文件时,普通的Browser Application会出现“为授予信任(Trust not granted)”的错误:
以下是解决方案
修改安全属性
打开项目属性,选择Security选项卡,选择“This is a full trust application”单选框:
也可以根据项目具体内容,选择“This is a partial trust application”,然后设置相应权限。
添加代码签名
申请一个证书
在开发阶段,可以通过点击Create Test Certificate按钮来生成一个测试证书
同样的,还可以向Windows 证书服务器递交证书申请,证书的类型选择:“代码签名证书”,并将“标记密钥为可导出”选中:
完成后,把证书文件导出为pfx文件和cer文件,复制到项目文件夹下:
回到Visual Studio的Signing选项卡,点解“Select from File”,使用刚才导出的pfx文件:
该证书已被导入:
还可以点击More Details来查看该证书:
PS,在默认情况下,申请的证书有效期只有一年,可以通过修改证书服务器的注册表来延长证书的有效期:
在证书服务器上运行注册表编辑器,找到
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\CertSvc\Configuration\
将
ValidityPeriod 修改为 Year
ValidityPeriodUnits 修改为 20(20年,够用了)
重启证书服务器,然后重新申请一个证书,现在,该证书的有效期变成20年了。
我们点击Publish Now,重新发布这个应用程序
在客户端安装证书
把上一步导出的cer文件复制到客户端,双击该文件,选择安装证书:
把证书安装到受信任的发行者
现在客户端也能访问了!