C# t设置为SQL用户,并在web.config中设置SQL用户和密码。或者,您可以更改IIS进程使用的用户帐户,并将数据库配置为与该用户一起使用。

C# t设置为SQL用户,并在web.config中设置SQL用户和密码。或者,您可以更改IIS进程使用的用户帐户,并将数据库配置为与该用户一起使用。,c#,asp.net,sql-server,linq,C#,Asp.net,Sql Server,Linq,在您的问题中,不清楚您是否在开发和生产之间使用不同的数据库。通常,您将拥有(至少)两个数据库副本,并将连接字符串设置为在部署时指向正确的环境(通常通过更改web配置中的值)。或者,您可以使用Dave提到的技术在运行时设置连接字符串 在您的情况下,我怀疑您正在使用集成身份验证,并通过SQL安全权限使Cougt措手不及。当您在本地环境中通过在VisualStudio中调试来测试它时,它将在您的安全凭据下运行。最可能的情况是,您的用户帐户是数据库中的管理员(db所有者),因此您拥有对数据库的完全权限

在您的问题中,不清楚您是否在开发和生产之间使用不同的数据库。通常,您将拥有(至少)两个数据库副本,并将连接字符串设置为在部署时指向正确的环境(通常通过更改web配置中的值)。或者,您可以使用Dave提到的技术在运行时设置连接字符串

在您的情况下,我怀疑您正在使用集成身份验证,并通过SQL安全权限使Cougt措手不及。当您在本地环境中通过在VisualStudio中调试来测试它时,它将在您的安全凭据下运行。最可能的情况是,您的用户帐户是数据库中的管理员(db所有者),因此您拥有对数据库的完全权限

部署时,IIS在NetworkService凭据下运行。当您尝试访问数据库时,请求失败,因为NetworkService在数据库中未被授予对每个表/视图/存储过程/等的权限

如果在服务器上设置了混合模式,则可以将每个数据库对象的权限设置为SQL用户,并在web.config中设置SQL用户和密码。或者,您可以更改IIS进程使用的用户帐户,并将数据库配置为与该用户一起使用

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;
using (var dc = new MyDataContext()) {
   ...
}
using (var dc = new MyDataContext(MyConnectionString)){
  ...
}