我在 Windows Server 2019 和 SQL Server 2017 上有一个 MVC Web 应用程序。

当我读取/写入数据库时​​,如果我在连接字符串上添加凭据或删除凭据,则可以读取/写入数据库。

我已经在 IUSR 组中创建了一个具有凭据的用户,并且创建了一个新的池应用程序,但问题并没有解决。

有人可以帮帮我吗?

5

  • 有多种方法可以从 IIS 上的 Web 应用程序连接到 SQL 服务器实例,因此您需要清楚地说明您的要求。您想要使用专用帐户,还是想要启用类似模拟的功能?只有提供更多详细信息,人们才能提供帮助。


    – 


  • 好的,我希望对您有所帮助,我开发了一个 mvc 应用程序(例如电话簿),每个用户都有一个数据库。当用户登录应用程序时,我需要使用我在连接字符串中找到的凭据打开与该用户关联的数据库。执行此操作的最佳或正确模式是什么?


    – 

  • 我建议您在继续操作并遇到其他问题之前重新考虑此应用程序的设计。1)“每个用户都有一个数据库”可能是一个糟糕的设计,除非您真的需要将用户数据彼此隔离。2)“当用户登录应用程序时”,那么您使用的身份验证方法是什么?这会对您手头的其他选项产生很大影响。在这个阶段,我认为这更像是一个 Stack Overflow 问题,您可以在其中收集改进应用程序的提示,而不是最终部署的问题。


    – 


  • 你说的没错,但在这个特定情况下不行。我的应用程序是一个业务管理软件,每个用户都是一个公司,所以每个用户都需要一个数据库来保证安全和隐私。目前我的应用程序管理多个公司和多个数据库,我只使用一个应用程序池,数据库更改是基于代码完成的登录完成的。并正常工作,但我想在连接字符串上设置凭据。另一个应用程序不同,有 1 个用户 1 个数据库 1 个应用程序池,身份验证问题仍然存在,我无法解决它。


    – 

  • 那么,这是一种非常奇怪的隔离(共享 Web 应用程序但隔离数据库)。完全隔离(隔离的 Web 应用程序和隔离的数据库)可能更好,可以防止一家公司的数据从另一家公司泄露。无论如何,你已经找到了罪魁祸首,所以你应该接受你自己的答案。


    – 


最佳答案
2

如果您使用集成身份验证,请在连接字符串中设置“Integrated Security=true;”,而不是指定凭据。

如果您使用基于表单的身份验证并提示用户输入凭据,则需要通过传递凭据在代码中建立连接,该凭据可能会在连接到数据库时放入连接字符串中。如何完成此操作取决于 ORM 框架或您如何建立 SQL 连接。

1

  • 已解决,问题在于 IIS10 和 Sequel Server 的配置不正确。感谢您的回答。


    – 


我认为问题出在连接字符串上,在您发帖之后我做了测试,结果如下:

情况1:用户ID和密码正确

连接字符串= 数据源=.;初始目录=Webbit;集成安全性=false;MultipleActiveResultSets=true;Trusted_Connection=false;用户 ID=joinddns;密码=Redbox@10;

错误= 已成功与服务器建立连接,但在登录过程中发生错误。(提供程序:共享内存提供程序,错误:0 – 管道另一端没有其他进程。)

情况2:用户ID或密码不正确

连接字符串= 系统;数据源 =。;初始目录 = Webbit;集成安全性 = false;MultipleActiveResultSets = true;Trusted_Connection = false;用户 ID = joinddns;密码 = Redbox@100

错误= 用户“joinddns”登录失败。

0