请求'System.Data.SqlClient.SqlClientPermission类型的权限失败

时间:2010-11-04 11:47:56

标签: asp.net sql-server

我有一个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的一些错误配置?

3 个答案:

答案 0 :(得分:3)

尝试在调试模式下运行Web Service时会出现此错误。我发现这是因为代码在网络驱动器上(在我的情况下,我的文档在主驱动器上)。

我建议检查代码不是网络驱动器。

答案 1 :(得分:1)

我遇到了同样的问题,我这样解决了:

将我的应用程序在IIS中使用的应用程序池标识更改为预建帐户NetworkService。

默认身份是ApplicationPoolIdentity,看起来它没有足够的权限来访问网络资源。

答案 2 :(得分:0)

运行ASP.net应用程序的安全上下文无权加载该SQL客户端程序集。开箱即用的上下文,ASPNET确实如此,所以有一些问题已经破坏了它的一些自定义配置...很难说没有看到盒子的东西。

但最重要的是,应用程序的安全上下文没有该程序集的权限。以下步骤可以让您工作:

  1. 编写一个输出应用程序安全上下文的页面:
  2. Response.Write(System.Security.Principal.Current().WindowsIdentity.Name);

    1. 将该页面上指定的用户添加到管理员组。这应该允许组件加载。

    2. 从管理员处将指定用户的权限降至最低。