【问题标题】:Classic ASP connection works; .Net fails. Why?经典的 ASP 连接工作; .Net 失败。为什么?
【发布时间】:2019-09-15 11:54:40
【问题描述】:

这适用于经典 ASP 网站:

sConnString = "Provider=SQLOLEDB;Data Source=MySerer;Initial Catalog=MyDB;Integrated Security=SSPI;"

在 .Net 网站中,以下连接字符串出现“用户 'NT AUTHORITY\ANONYMOUS LOGON' 登录失败”错误。

<add name="Production"  
     connectionString="Data Source=MyServer;Initial Catalog=MyDB;Integrated Security=SSPI;"
     providerName="System.Data.SqlClient" />

两者都在 IIS 上的同一个应用程序池中运行,并且两个站点都设置为使用相同的管理员用户进行连接,如基本设置下设置的那样。

看起来,虽然 .Net 站点以管理员身份运行,但它无法将其传递给 SQL Server。不仅如此,如果我将登录名/密码硬编码到连接字符串中,它会返回与匿名登录相同的错误。

怎么了?

【问题讨论】:

  • 您应该提供Exception 消息以查看发生了什么以及失败的原因
  • 请不要使用管理帐户设置网站。您应该使用具有最小访问权限的单独服务帐户,该帐户被配置为有权访问数据库的应用程序池身份。
  • 我删除了我的答案,因为我所说的由 IIS 传递到 SQL Server 连接的凭据是在应用程序池上设置的凭据。在此基础上,您能否显示实际应用程序池配置的屏幕截图以及无法连接的站点正在使用该应用程序池的事实?
  • 您也可以分享您的 web.config 吗?你有这个启用吗? &lt;authentication mode="Windows"&gt; 除非你能分享更多细节,否则向飞镖投掷飞镖。

标签: asp.net sql-server iis


【解决方案1】:

原来我有不止一个问题。当我将应用程序移至其自己的应用程序池并将池的身份设置为实际的管理员帐户时,登录问题已得到解决。 (我愿意使用非管理员帐户;只需要先识别/解决问题。)

另一个问题是 DotNet 站点应该查询的数据库中缺少一些视图和存储过程。是的,Classic ASP 可以连接到该数据库和另一个数据库,但连接性是我使用 Classic ASP 测试的全部内容,实际上并未执行所需的查询。 DotNet 站点可以连接并查询具有视图和存储过程的数据库,但在尝试查询缺少这些对象的数据库时出现 404 错误。

我不能说我完全清楚,因为 DotNet 网站有时可以 甚至在将对象移动到自己的应用程序池之前就从数据库中获取数据,有时不会。至少我已经启动并运行了。我会继续尝试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-06
    • 1970-01-01
    • 2015-03-14
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多