在windows server 2012上部署WebService,配置服务连接另一台数据库服务器中的数据库。调用WebService时报如下错误。
请求“System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败
百度错误信息,网上主要有两种解决方式:修改服务配置文件(参考文献1-3)及修改应用程序池设置(参考文献4)。
修改服务配置文件是修改web.config中trust元素的属性,将level的等级改为Full,如下所示。搜索部署的WebService配置文件,并未找到trust元素,并且参考文献1中也没有提及trust是在哪个元素下,因此未采用该方法。
<trust level="WSS_Minimal" originUrl="" />
改为
<trust level="Full" originUrl="" />
第二种方式是修改WebService使用的应用程序池的设置,如下图所示(电脑中没有Windows Server 2012,在此以Windows Server 2008中的IIS设置为例)。
找到WebService使用的应用程序池,选择高级设置,找到其中的标识属性,该值默认为ApplicationPoolIdentify,将值更改为NewworkService,保存设置,重启应用程序池。再测试WebService函数,已经可以正常调用。
参考文献:
[1]https://blog.youkuaiyun.com/qq546937127/article/details/4305677
[2]https://blog.youkuaiyun.com/jzp_cn/article/details/6318730?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link
[3]https://www.cnblogs.com/914556495wxkj/p/4287092.html
[4]https://www.orcode.com/question/1002984_k1b9f7.html