我有一个ASP.NET应用程序,使用LINQ连接到SQL Server 2008 R2数据库。
我的连接字符串:
Data Source=[SqlServerIp];Initial Catalog=[databaseName]User Id=newLogin;Password=newPassword;
当我在我的本地IIS(与数据库服务器不是同一台机器)上部署应用程序时,它运行正常,但是当我在其他IIS(与SQL Server相同的机器)上部署应用程序时,它会引发异常:
System.Security.SecurityException:请求类型为'System.Data.SqlClient.SqlClientPermission,System.Data,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的权限失败。
任何人都知道如何修复它?也许是由于IIS的一些错误配置?
答案 0 :(得分:3)
尝试在调试模式下运行Web Service时会出现此错误。我发现这是因为代码在网络驱动器上(在我的情况下,我的文档在主驱动器上)。
我建议检查代码不是网络驱动器。
答案 1 :(得分:1)
我遇到了同样的问题,我这样解决了:
将我的应用程序在IIS中使用的应用程序池标识更改为预建帐户NetworkService。
默认身份是ApplicationPoolIdentity,看起来它没有足够的权限来访问网络资源。
答案 2 :(得分:0)
运行ASP.net应用程序的安全上下文无权加载该SQL客户端程序集。开箱即用的上下文,ASPNET确实如此,所以有一些问题已经破坏了它的一些自定义配置...很难说没有看到盒子的东西。
但最重要的是,应用程序的安全上下文没有该程序集的权限。以下步骤可以让您工作:
Response.Write(System.Security.Principal.Current().WindowsIdentity.Name);
将该页面上指定的用户添加到管理员组。这应该允许组件加载。
从管理员处将指定用户的权限降至最低。