Asp.net 请求类型为'的许可;System.Data.SqlClient.SqlClientPermission失败

Asp.net 请求类型为'的许可;System.Data.SqlClient.SqlClientPermission失败,asp.net,sql-server,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.S

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

运行ASP.net应用程序的安全上下文没有加载该sql客户端程序集的权限。开箱即用的上下文是ASPNET,因此出现了一些自定义配置破坏了它的问题……如果不查看该框,很难说出是什么

但底线是,应用程序的安全上下文没有到该程序集的perm。以下步骤可以让您工作:

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

  • 将该页面上名为的用户添加到administrators组。这将允许组件加载

  • 将指定用户的权限从管理员降低到最低限度


  • 在调试模式下运行Web服务时,我会遇到此错误。我发现这是因为代码在网络驱动器上(在我的例子中,我的文档在主驱动器上)


    我建议检查代码是否在非网络驱动器中。

    我遇到了同样的问题,我通过以下方式解决了这个问题:

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


    默认标识是ApplicationPoolIdentity,它似乎没有足够的权限访问网络资源。

    如果它位于网络驱动器上,您会怎么做?将代码放在网络驱动器上是一种可接受的配置。简单地将代码移动到本地不是一个可接受的解决方案。对我来说也是如此!谢谢!