我们有使用WCF和模拟的服务。
用户可以使用属于Active Directory系统的凭据登录客户端应用程序。
用户登录是模拟服务端。
当登录的用户在其主机上设置为本地管理员时,此工作正常。
但是当他们是非特权(标准)用户时会出现问题。我们得到一个异常,声明访问被拒绝“我们的DLL之一”。 (它发生在我们所有的DLL上)
答案 0 :(得分:0)
这实际上是部署环境权限的简单问题。
使用Code Access Security Policy Tool (Caspol.exe)只需要应用正确的权限。 msdn上有一个使用指南。
实际的命令行字符串是
CasPol.exe -addgroup 1 -strong -file D:\ deployment_location \ WcfServiceHost.exe -noname -noversion FullTrust
这是在一系列服务上执行的。由于我们的版本号经常使用“noversion”进行更改很有帮助,因此该服务在我们的设置中也需要FullTrust。
要为各种计算机重新使用此修复程序,请创建PowerShell脚本(或批处理文件)并使用“polchgprompt”参数关闭提示,以便脚本可以在不进行干预的情况下执行。
polchgprompt - “启用或禁用使用可能导致策略更改的选项运行Caspol.exe时显示的提示。”
脚本结构:
CasPol.exe -polchgprompt off
--all the individual service calls--
CasPol.exe -addgroup 1 -strong -file D:\deployment_location\WcfServiceHost.exe -noname -noversion FullTrust
...
CasPol.exe -polchgprompt on