我们在公司网络上有一个ASP.NET MVC应用程序。它运行在两台机器上(一台用于IIS,另一台用于Server) -- Windows身份验证和双跳操作一切正常。
现在我实现了会话变量,每次我想打开应用程序时,都会出现一个登录错误:
用户‘
\MACHINENAME$’登录失败
在我的测试机器上(Visual和Server在同一台计算机上),会话变量可以正常工作。
IIS将使用用户凭据而不是它本身,这又是怎么回事?
发布于 2020-07-14 03:17:05
当我们在数据库连接字符串中使用集成安全性时,托管在IIS/IIS Express中的应用程序将尝试将数据库连接到当前登录Windows account。如果Visual Studio和SQL Server位于同一台计算机上,具有集成安全性的数据库连接字符串将工作良好,因为这两个应用程序(Web应用程序和server)都在同一个windows帐户下运行。当web应用程序托管在IIS/IIS Express中,而数据库连接方式是集成安全性时,默认的数据库连接凭据是运行IIS/IIS Express的windows帐户。
我建议我们可以更改在数据库连接字符串(如SQL Authentication )中连接SQL server的方式。
Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False
Data Source=mysqlserver;User ID=sa;Password=123456;Connect ID=sa;Password=123456;Connect
或者,为了避免使用SQL服务器的当前windows帐户连接数据库,可以将应用程序池标识更改为另一个域帐户,前提是Windows帐户应该能够登录到SQL服务器。
有关Application pool identity的更多详细信息。
https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities
如果问题仍然存在,请随时通知我。
https://stackoverflow.com/questions/62829287
复制相似问题